1、環境準備
| IP | 主機名 | 服務 |
| 10.0.0.101 | keepalive1 | keepalived+nginx |
| 10.0.0.102 | keepalive2 | keepalived+nginx |
| 10.0.0.18 | web01 | nginx作為后端web服務 |
| 10.0.0.28 | web02 | nginx作為后端web服務 |
| 10.0.0.100 | rocky8 | 客戶端用來測驗連接 |

2、后端服務器準備
#使用腳本安裝nginx(略),并寫一個測驗頁面 [root@web2 ~]#echo "Welcome to `hostname -I` test page" > /apps/nginx/html/index.html
#驗證測驗
[root@keepalive1 ~]#curl 10.0.0.18
Welcome to 10.0.0.18 test page
[root@keepalive1 ~]#curl 10.0.0.28
Welcome to 10.0.0.28 test page
3、實作keepalived高可用
兩臺keepalived服務器都需要安裝nginx和keepalived服務,keepalived集群實作高可用的時候是有兩種模式的,可以采用主從架構和主主架構這兩種默認,在這里我們就分別演示一下,
3.1、主從架構
3.1.1、安裝nginx服務并配置
[root@keepalive1 ~]#vim /apps/nginx/conf/conf.d/ka_web.conf #寫入下面配置資訊 upstream ka_web { server 10.0.0.18:80 weight=2 max_fails=3 fail_timeout=30s; server 10.0.0.28:80 weight=1 max_fails=3 fail_timeout=30s; } server { listen 80; server_name www.katext.com; root /apps/nginx/html; location / { proxy_pass http://ka_web; } } [root@keepalive1 ~]#nginx -t nginx: [warn] conflicting server name "localhost" on 0.0.0.0:80, ignored nginx: the configuration file /apps/nginx/conf/nginx.conf syntax is ok nginx: configuration file /apps/nginx/conf/nginx.conf test is successful [root@keepalive1 ~]#nginx -s reload
#keepalive2節點同樣操作
#訪問測驗
[root@keepalive1 nginx]#curl 10.0.0.101
Welcome to 10.0.0.18 test page
[root@keepalive1 nginx]#curl 10.0.0.101
Welcome to 10.0.0.28 test page
[root@keepalive1 nginx]#curl 10.0.0.101
Welcome to 10.0.0.18 test page
[root@keepalive1 nginx]#curl 10.0.0.101
Welcome to 10.0.0.18 test page
[root@keepalive1 nginx]#curl 10.0.0.101
Welcome to 10.0.0.28 test page
[root@keepalive1 nginx]#curl 10.0.0.102
Welcome to 10.0.0.28 test page
[root@keepalive1 nginx]#curl 10.0.0.102
Welcome to 10.0.0.18 test page
[root@keepalive1 nginx]#curl 10.0.0.102
Welcome to 10.0.0.18 test page
[root@keepalive1 nginx]#curl 10.0.0.102
Welcome to 10.0.0.28 test page
[root@keepalive1 nginx]#curl 10.0.0.102
Welcome to 10.0.0.18 test page
3.1.2、安裝keepalived并配置服務
安裝程序上篇文章已經說過了,這里不再復述,接下來是keepalived的配置資訊
#對keepalived1配置 [root@keepalive1 ~]#vim /etc/keepalived/keepalived.conf global_defs { router_id LVS_DEVEL } [root@keepalive1 ~]#systemctl restart keepalived.service vrrp_instance VI_1 { state MASTER #主機器 interface eth0 virtual_router_id 51 priority 100 #權重要比從機器高 advert_int 1 authentication { auth_type PASS auth_pass 123456 } virtual_ipaddress { 10.0.0.200 dev eth0 label eth0:1 } } #對keepalived2配置 [root@keepalive2 ~]#vim /etc/keepalived/keepalived.conf global_defs { router_id LVS_DEVEL } vrrp_instance VI_1 { state BACKUP#從機器 interface eth0 virtual_router_id 51 #虛擬路由號要和主機相同 priority 80 #權重要比主機器低 advert_int 1 authentication { auth_type PASS auth_pass 123456 #驗證密碼要和主機一致 } virtual_ipaddress { 10.0.0.200 dev eth0 label eth0:1 } }
#重啟服務
[root@keepalive2 ~]#systemctl restart keepalived.service
#在客戶端配置一下hosts決議
[root@ubuntu2004 ~]#echo "10.0.0.200 www.katest,com" >> /etc/hosts
#測驗訪問
[root@keepalive1 ~]#curl www.katest.com
Welcome to 10.0.0.18 test page
[root@keepalive1 ~]#curl www.katest.com
Welcome to 10.0.0.28 test page
[root@keepalive1 ~]#curl www.katest.com
Welcome to 10.0.0.18 test page
[root@keepalive1 ~]#curl www.katest.com
Welcome to 10.0.0.18 test page
[root@keepalive1 ~]#curl www.katest.com
Welcome to 10.0.0.28 test page
3.2.2、模擬某一個主節點出現故障
#這里我停掉了主節點的keepalived服務以及nginx服務來模擬主節點損壞 [root@keepalive1 ~]#systemctl stop keepalived [root@keepalive1 ~]#systemctl stop nginx #切換到可以發現10.0.0.200的vip已經飄到了從節點 [root@keepalive2 ~]#ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 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 inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 00:0c:29:6a:6e:55 brd ff:ff:ff:ff:ff:ff inet 10.0.0.102/24 brd 10.0.0.255 scope global eth0 valid_lft forever preferred_lft forever inet 10.0.0.200/32 scope global eth0:1 valid_lft forever preferred_lft forever inet6 fe80::20c:29ff:fe6a:6e55/64 scope link valid_lft forever preferred_lft forever #訪問測驗 [root@ubuntu2004 ~]#curl www.katest.com Welcome to 10.0.0.18 test page [root@ubuntu2004 ~]#curl www.katest.com Welcome to 10.0.0.28 test page [root@ubuntu2004 ~]#curl www.katest.com Welcome to 10.0.0.18 test page [root@ubuntu2004 ~]#curl www.katest.com Welcome to 10.0.0.18 test page [root@ubuntu2004 ~]#curl www.katest.com Welcome to 10.0.0.28 test page #訪問成功
3.1.4、恢復MASTER節點重回集群
當ka1主機恢復后重回集群時,由于當時設定的ka1的優先級是100,而ka2主機設定的優先級是80,當現在在查看ip是,VIP就立即飄回ka1節點上,這里使用的是搶占式模式,也是默認的模式,這里也可以設定延遲一會在把VIP搶過去,
#啟動ka1節點 [root@keepalive1 ~]#systemctl start nginx.service [root@keepalive1 ~]#systemctl start keepalived [root@keepalive1 ~]#ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 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 inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 00:0c:29:c5:32:4d brd ff:ff:ff:ff:ff:ff inet 10.0.0.101/24 brd 10.0.0.255 scope global eth0 valid_lft forever preferred_lft forever inet 10.0.0.200/32 scope global eth0:1 valid_lft forever preferred_lft forever #查看ka節點IP地址 [root@keepalive2 ~]#ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 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 inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 00:0c:29:6a:6e:55 brd ff:ff:ff:ff:ff:ff inet 10.0.0.102/24 brd 10.0.0.255 scope global eth0 valid_lft forever preferred_lft forever inet6 fe80::20c:29ff:fe6a:6e55/64 scope link valid_lft forever preferred_lft forever #訪問測驗 [root@keepalive1 ~]#curl www.katest.com Welcome to 10.0.0.18 test page [root@keepalive1 ~]#curl www.katest.com Welcome to 10.0.0.28 test page [root@keepalive1 ~]#curl www.katest.com Welcome to 10.0.0.18 test page [root@keepalive1 ~]#curl www.katest.com Welcome to 10.0.0.18 test page [root@keepalive1 ~]#curl www.katest.com Welcome to 10.0.0.28 test page
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/523118.html
標籤:其他
