一、環境準備
節點1:172.16.2.95
節點2:172.16.2.160
節點3:172.16.2.220
LVS1:172.16.2.67
LVS2:172.16.2.234html
二、mariadb集羣的安裝mysql
https://www.cnblogs.com/linyouyi/p/11515639.htmlsql
三、在三臺安裝mariadb機器操做docker
echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce ifconfig lo:0 172.16.2.253 broadcast 172.16.2.253 netmask 255.255.255.255 up #ifconfig lo:0 172.16.2.253 netmask 255.255.255.255 up route add -host 172.16.2.253 lo:0
3.一、查看虛擬ip數據庫
//01 [root@hadoop01 linyouyi]# ip addr show lo 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet 172.16.2.253/32 brd 172.16.2.253 scope global lo:0 valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever [root@hadoop01 linyouyi]# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 172.16.2.1 0.0.0.0 UG 0 0 0 eth0 0.0.0.0 172.16.2.1 0.0.0.0 UG 100 0 0 eth0 169.254.169.254 172.16.2.1 255.255.255.255 UGH 100 0 0 eth0 172.16.2.0 0.0.0.0 255.255.255.0 U 100 0 0 eth0 172.16.2.253 0.0.0.0 255.255.255.255 UH 0 0 0 lo 172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0 //02 [root@hadoop02 mariadb]# ip addr show lo 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet 172.16.2.253/32 brd 172.16.2.253 scope global lo:0 valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever [root@hadoop02 mariadb]# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 172.16.2.1 0.0.0.0 UG 100 0 0 eth0 169.254.169.254 172.16.2.1 255.255.255.255 UGH 100 0 0 eth0 172.16.2.0 0.0.0.0 255.255.255.0 U 100 0 0 eth0 172.16.2.253 0.0.0.0 255.255.255.255 UH 0 0 0 lo 172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0 //03 [root@hadoop03 mariadb]# ip addr show lo 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet 172.16.2.253/32 brd 172.16.2.253 scope global lo:0 valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever [root@hadoop03 mariadb]# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 172.16.2.1 0.0.0.0 UG 100 0 0 eth0 169.254.169.254 172.16.2.1 255.255.255.255 UGH 100 0 0 eth0 172.16.2.0 0.0.0.0 255.255.255.0 U 100 0 0 eth0 172.16.2.253 0.0.0.0 255.255.255.255 UH 0 0 0 lo 172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0
四、LVS1安裝keepalived-1.3.5和ipvsadm-1.27vim
[root@LVS1 ~]# yum -y install keepalived ipvsadm [root@LVS1 ~]# cd /etc/keepalived [root@LVS1 keepalived]# cp keepalived.conf keepalived.conf.bak [root@LVS1 keepalived]# vim keepalived.conf global_defs { notification_email { admin@linyouyi.com } notification_email_from ka@localhost smtp_server 127.0.0.1 smtp_connect_timeout 30 router_id lvs1 } vrrp_instance VI_1 { state MASTER interface eth0 virtual_router_id 50 priority 100 advert_int 1 authentication { auth_type pass auth_pass forlvs } virtual_ipaddress { 172.16.2.253 } } virtual_server 172.16.2.253 3306 { delay_loop 6 lb_algo rr lb_kind DR nat_mask 255.255.255.255 persistence_timeout 600 protocol TCP real_server 172.16.2.95 3306 { weight 1 TCP_CHECK { connect_timeout 3 nb_get_retry 3 delay_before_retry 3 connect_port 3306 } } real_server 172.16.2.220 3306 { weight 1 TCP_CHECK { connect_timeout 3 nb_get_retry 3 delay_before_retry 3 connect_port 3306 } } real_server 172.16.2.160 3306 { weight 1 TCP_CHECK { connect_timeout 3 nb_get_retry 3 delay_before_retry 3 connect_port 3306 } } } [root@LVS1 keepalived]# systemctl start keepalived [root@LVS1 keepalived]# ipvsadm -Ln IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 172.16.2.253:3306 rr persistent 600 -> 172.16.2.95:3306 Route 1 0 0 -> 172.16.2.160:3306 Route 1 0 0 -> 172.16.2.220:3306 Route 1 0 0 // 可是其餘的機器老是訪問不了vip,不知道是雲主機不能用keepalived虛擬ip仍是啥緣由,還沒找到
4.一、測試緩存
[root@LVS1 keepalived]# ip addr show eth0 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether fa:16:3e:2f:b0:e0 brd ff:ff:ff:ff:ff:ff inet 172.16.2.67/24 brd 172.16.2.255 scope global dynamic eth0 valid_lft 85187sec preferred_lft 85187sec inet 172.16.2.253/32 scope global eth0 valid_lft forever preferred_lft forever inet6 fe80::f816:3eff:fe2f:b0e0/64 scope link valid_lft forever preferred_lft forever //把數據庫220的mariadb停掉 [root@LVS1 keepalived]# ipvsadm IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP cx--0009.novalocal:mysql rr persistent 600 -> 172.16.2.95:mysql Route 1 0 0 -> 172.16.2.160:mysql Route 1 0 0
五、LVS1安裝keepalived-1.3.5和ipvsadm-1.27服務器
[root@LVS2 keepalived]# vim keepalived.conf global_defs { router_id lvs2 } vrrp_instance VI_1 { state BACKUP priority 99 } } //配置文件這幾項改一下,其他的步驟和LVS1同樣
5.一、測試LVS高可用oop
把LVS1的keepalived停掉,看VIP會不會自動移動到LVS2測試
[root@LVS1 keepalived]# systemctl stop keepalived [root@LVS2 ~]# ip addr show eth0 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether fa:16:3e:a3:75:41 brd ff:ff:ff:ff:ff:ff inet 172.16.2.234/24 brd 172.16.2.255 scope global dynamic eth0 valid_lft 62412sec preferred_lft 62412sec inet 172.16.2.253/32 scope global eth0 valid_lft forever preferred_lft forever inet6 fe80::f816:3eff:fea3:7541/64 scope link valid_lft forever preferred_lft forever [root@LVS2 ~]# ipvsadm IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP cx--0015.novalocal:mysql rr persistent 600 -> 172.16.2.95:mysql Route 1 0 0 -> 172.16.2.160:mysql Route 1 0 0 -> 172.16.2.220:mysql Route 1 0 0
可是其餘的機器老是訪問不了vip,不知道是雲主機不能用keepalived虛擬ip仍是啥緣由,還沒找到,彷佛是雲服務器的vip須要申請,跟服務商申請。反正就是雲服務器跟虛擬機不同
https://www.cnblogs.com/galengao/articles/7417520.html
//每臺主機查一下arp,發現VIP的HWaddress都是incomplete,也就是沒法獲取mac硬件地址,因此不知道指向那臺機器,所以沒法ping通,沒法訪問 [root@cx--0008 ~]# arp -n Address HWtype HWaddress Flags Mask Iface 172.16.2.1 ether fa:16:3e:3d:4d:a0 C eth0 10.42.2.0 (incomplete) flannel.1 172.16.2.95 ether fa:16:3e:dc:a1:c6 C eth0 172.16.2.222 (incomplete) eth0 172.16.2.67 ether fa:16:3e:2f:b0:e0 C eth0 172.17.0.2 ether 02:42:ac:11:00:02 C docker0 10.42.1.0 (incomplete) flannel.1 172.17.0.4 ether 02:42:ac:11:00:04 C docker0 172.16.2.254 ether fa:16:3e:de:bd:f9 C eth0 172.16.2.234 ether fa:16:3e:a3:75:41 C eth0 172.16.2.253 (incomplete) eth0 172.17.0.3 ether 02:42:ac:11:00:03 C docker0 172.16.2.17 ether fa:16:3e:f3:5e:6f C eth0 //清空arp緩存依然不行 [root@LVS1 keepalived]# arp -n|awk '/^[1-9]/{system("arp -d "$1)}' SIOCDARP(dontpub): Network is unreachable SIOCDARP(dontpub): Network is unreachable
ipvsadm -lnc