java双机调度_Haproxy+keepalive-群集架构实验
實驗案例拓補圖:
要求:如圖所示,有兩臺haproxy調度器,但是所有的流量全部由主調度器獲取,由主調度器可以正常調度web節點。
環境:
調度器(雙機熱備)
IP地址:192.168.100.11(主)+ 漂移地址:virtual-ip:192.168.100.200 +Haproxy服務器
IP地址:192.168.100.12(備)+漂移地址:virtual-ip:192.168.100.200 +Haproxy服務器
Web服務器兩臺:
IP地址:192.168.100.2(Web1)
IP地址:192.168.100.3(Web2)
NFS共享服務器:
IP地址:192.168.100.4
客戶端一臺:用于測試驗證
IP地址:192.168.100.5(client)
NFS共享服務器: 192.168.100.4
mkdir /web1
mkdir /web2
echo "
nginx1
" > /web1/index.html '設置共享目錄'echo "
nginx2
" > /web2/index.html '設置共享目錄'vi /etx/exports
/web1 192.168.100.2/32 (ro)
/web2 192.168.100.3/32 (ro)
systemctl restart nfs
systemctl restart rpcbind
Nginx服務器1:192.168.100.2
tar xzvf nginx-1.13.7.tar.gz '先解壓'
yum -y install gcc gcc-c++ make pcre-devel zlib-devel
useradd -M -s /sbin/nologin nginx
mount 192.168.100.4:/web1 /var/www/html/ 'nfs共享目錄掛載到/var/www/html'
nginx '開啟nginx服務'
curl http://localhost
nginx1
'效果'//LVS+Keepalived高可用群集
vi web1.sh
#!/bin/bash
# lvs web1
ifconfig lo:0 192.168.100.200 broadcast 192.168.100.200 netmask 255.255.255.255 up '添加虛擬地址的虛接口'
route add -host 192.168.100.200 dev lo:0 '給lo:0添加路由'
echo "1" > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" > /proc/sys/net/ipv4/conf/lo/arp_announce
echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce
sysctl -p &> /dev/null
sh web1.sh
ifconfig
lo:0: flags=73 mtu 65536 '添加的虛擬地址'
inet 192.168.100.200 netmask 255.255.255.255
loop txqueuelen 1 (Local Loopback)
route -n
192.168.100.200 0.0.0.0 255.255.255.255 UH 0 0 0 lo
Nginx服務器2:192.168.100.3
tar xzvf nginx-1.13.7.tar.gz '先解壓'
yum -y install gcc gcc-c++ make pcre-devel zlib-devel
useradd -M -s /sbin/nologin nginx
mount 192.168.100.4:/web2 /var/www/html/ 'nfs共享目錄掛載到/var/www/html'
nginx '開啟nginx服務'
curl http://localhost
nginx2
'效果'//LVS+Keepalived高可用群集
vi web2.sh
#!/bin/bash
# lvs web2
ifconfig lo:0 192.168.100.200 broadcast 192.168.100.200 netmask 255.255.255.255 up '添加虛擬地址的虛接口'
route add -host 192.168.100.200 dev lo:0 '給lo:0添加路由'
echo "1" > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" > /proc/sys/net/ipv4/conf/lo/arp_announce
echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce
sysctl -p &> /dev/null
sh web2.sh
ifconfig
lo:0: flags=73 mtu 65536 '添加的虛擬地址'
inet 192.168.100.200 netmask 255.255.255.255
loop txqueuelen 1 (Local Loopback)
route -n
192.168.100.200 0.0.0.0 255.255.255.255 UH 0 0 0 lo
IP地址:192.168.100.11(主)+ 漂移地址:virtual-ip:192.168.100.200 +Haproxy服務器
Keepalived搭建雙機主
tar zxvf keepalived-2.0.13.tar.gz '解壓'
yum -y insatll ipvsadm
yum -y install gcc gcc-c++ make popt-devel kernel-devel openssl-devel
cd keepalived-2.0.13/
./configure --prefix=/ '配置'
make && make install '編譯安裝'
modprobe ip_vs
cat /proc/net/ip_vs '以下是效果'
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
systemctl enable keepalived '開機自啟'
cp keepalived/etc/init.d/keepalived /etc/init.d/ '方便編輯'
配置keepalived.conf
'先把里面東西刪掉'
主配置keepalived
! Configuration File for keepalived
global_defs {
router_id lvs_1
}
vrrp_instance vi_1 {
state MASTER
interface ens33
virtual_router_id 51
priority 150
advert_int 1
authentication {
auth_type PASS
auth_pass 6666
}
virtual_ipaddress {
192.168.100.200
}
}
virtual_server 192.168.100.200 80 { '虛擬地址'
delay_loop 6
lb_algo rr
lb_kind DR
persistence_timeout 6
protocol TCP
real_server 192.168.100.2 80 { '節點地址'
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
real_server 192.168.100.3 80 { '節點地址'
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
systemctl restart keepalived.service '開啟keepalived服務'
ip addr '代表是主會添加虛擬地址'
ens33: mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:02:b2:9b brd ff:ff:ff:ff:ff:ff
inet 192.168.100.11/24 brd 192.168.100.255 scope global ens33
valid_lft forever preferred_lft forever
inet 192.168.100.200/32 scope global ens33
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fe02:b29b/64 scope link
valid_lft forever preferred_lft forever
ipvsadm -Ln
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.100.200:80 rr persistent 6
-> 192.168.100.2:80 Route 1 0 1
-> 192.168.100.3:80 Route 1 0 4
tail -f /var/log/messages '如下面這個結果'
Dec 11 00:26:38 localhost Keepalived_healthcheckers[70323]: TCP connection to [192.168.100.2]:tcp:80 success.
Haproxy服務器:192.168.100.11
tar xzvf haproxy-1.4.24.tar.gz '解壓'
yum -y install gcc gcc-c++ make pcre-devel zlib-devel
mkdir /etc/haproxy
cd haproxy-1.4.24/
make TARGET=linux26
make install
cp examples/haproxy.cfg /etc/haproxy/
vi /etc/haproxy/haproxy.cfg
#chroot /usr/share/haproxy '注釋掉'
#redispatch
'刪除所有listen,留下global defaults 加入下面這段'
listen webcluster 0.0.0.0:80
option httpchk GET /index.html
balance roundrobin
server web1 192.168.100.2:80 check inter 2000 fall 3 'web1服務器ip'
server web2 192.168.100.3:80 check inter 2000 fall 3 'web2服務器ip'
//設置開機自啟haproxy
cd haproxy-1.4.24/
cp examples/haproxy.init /etc/init.d/haproxy
vi /etc/init.d/haproxy
# chkconfig: 35 85 15 '默認是- 改為35'
chkconfig --add haproxy
chkconfig --list
haproxy 0:關 1:關 2:關 3:開 4:關 5:開 6:關
cd /etc/init.d/
chmod +x haproxy '授予權限'
chkconfig --add haproxy
ln -s /usr/local/sbin/haproxy /usr/sbin/haproxy
systemctl enable haproxy
systemctl start haproxy '開啟haproxy服務'
Keepalived搭建雙機備
Haproxy服務器:192.168.100.12 跟 Haproxy服務器:192.168.100.11一樣,copy上面的就好。
注:Keepalived備份服務器的配置與master的配置有三個選項不同。
vi /etc/keepalived/keepalived.conf
router_id:設為自有名稱
state:設為BACKUP
priority:值低于主服務器 145
其他選項與master相同
谷歌瀏覽器訪問漂移地址:192.168.100.200
這是Web2節點的頁面
等幾分鐘,清空瀏覽器記錄訪問漂移地址:192.168.100.200
這是Web1節點的頁面
客戶機
關閉 192.168.100.11主 然后在訪問漂移地址:192.168.100.200
再次訪問 192.168.100.200 效果一樣 會有兩個節點頁面。
ip addr可以查看漂移地址產生沒有。
本文地址:https://blog.csdn.net/weixin_50344807/article/details/111031093
如您對本文有疑問或者有任何想說的,請點擊進行留言回復,萬千網友為您解惑!
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的java双机调度_Haproxy+keepalive-群集架构实验的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java图遍历求最长路径_如何在Java
- 下一篇: java标识符 width_width(