Linux基礎(chǔ)教程之利用keepalived實現(xiàn)主/從和主/主模式的高性能負(fù)載均衡集群實戰(zhàn)手冊
要求:
1、使用nginx的反向代理功能實現(xiàn)負(fù)載均衡
2、keepalived實現(xiàn)高可用
???????第一組的虛擬地址為172.16.1.100
????????????D設(shè)備的優(yōu)先級高
???????第二組的虛擬地址為172.16.1.110
????????????E設(shè)備的優(yōu)先級高
3、分別實現(xiàn)主/從和主/主兩種配置
集群拓?fù)洌?/span>
? ? ?
第一種:主/從配置
所有配置之前先在各個主機(jī)上進(jìn)行時間同步
?ntpdate 時間服務(wù)器地址
一、后端real server(A、B、C)配置
???1、在A、B、C三臺主機(jī)上安裝httpd包
????yum install httpd
???2、配置虛擬主機(jī)
???????vim /etc/httpd/conf.d/vir.conf
??????A主機(jī):
? ? ? ?
? ? ?B主機(jī)
? ? ? ?
? ? ?C主機(jī)
? ? ? ??
? ?3、創(chuàng)建三主機(jī)的URL 目錄及主頁面
???A主機(jī)
?????mkdir ?-pv /data/web/
?????????vim /data/web/index.html
?????????內(nèi)容為 This is Vhost1
???B主機(jī)
?????mkdir ?-pv /data/web/
?????????vim /data/web/index.html
?????????內(nèi)容為 This is Vhost2
???C主機(jī)
?????mkdir ?-pv /data/web/
?????????vim /data/web/index.html
?????????內(nèi)容為 This is Vhost3
注意:三主機(jī)主頁面不同,是為了后面實驗來區(qū)分不同的real server
啟動httpd服務(wù): systemctl ?start ?httpd.service
二、配置負(fù)載均衡節(jié)點
? ? ? ? ?D(此主機(jī)為MASTER)
? E(此主機(jī)為BACKUP)主機(jī)
? 利用nginx的ngx_http_upsteam_module模塊實現(xiàn)負(fù)載均衡
1、安裝nginx包
? ? ? ? ? ??在D、E主機(jī)上分別安裝
? ? ? ? ? ? yum install nginx
2、配置負(fù)載均衡
? ? ? ? ? ?在D、E主機(jī)上分別安裝
???vim /etc/nginx/nginx.conf
???定義websvr組:
????upstream websvr {
??????????server 192.168.70.137:80;
??????????server 192.168.70.138:80;
??????????server 192.168.70.140:80;
?????????}
???反向代理組 websvr
???????location / {
?????????????proxy_pass http://websvr;
????????}
? ??
三、配置keepalived服務(wù)
? ? ? 1、全局配置
??主機(jī)D上
??
? ? ? ? ?主機(jī)E上配置
? ? ? ? ?
? ? ?2、分別在兩個主機(jī)上定義腳本 chk_down
? ? ? ? ?此腳本的功能:
? ? ? ? ? ??文件 /etc/keepalived/down 存在時:虛擬IP轉(zhuǎn)義到另一個節(jié)點
? ? ? ? ?vrrp_script chk_down {
? ? ? ? ? ? ? script “[[ -f /etc/keepalived/down ]] && exit 1 || exit 0”
? ? ? ? ? ? ? ?interval 1
? ? ? ? ? ? ? ?weight -10
? ? ? ? ? ? }
? ? ? 3、分別在兩個主機(jī)上定義腳本 chk_ngx
? ? ? ? ?此腳本功能:
? ? ? ? ? ?確認(rèn)nginx服務(wù)是否正運行
? ? ? ? ? vrrp_script chk_ngx {
? ? ? ? ? ? ? script “killall -0 nginx && exit 0 || exit 1”
? ? ? ? ? ? ? interval 1
? ? ? ? ? ? ??weight -10
? ? ? ? ? ? ? fall 2
? ? ? ? ? ? ? rise 1
? ? ? ? ? }
? ? ? ? ??
? ? ? 4、vrrp_instance配置
? ? ? ? ?D主機(jī)
? ? ? ? ?
? ? ??? E主機(jī)
? ? ? ??
? ? ?5、創(chuàng)建notify警告配置腳本
? ? ? ? ?分別在兩個主機(jī)上創(chuàng)建
? ? ? ? ?vim ?/etc/keepalived/notify.sh
? ? ? ? ??
? ? ? ? ?chmod +x notify.sh 給予此腳本執(zhí)行權(quán)限
6、啟動服務(wù)
??systemctl start keepalived.service
四、測試
??1、不做修改時,即主機(jī)D上沒有/etc/keepalived/down文件
? ? ? (1)、查看虛擬IP位置
? ? ? ? ? ??在主機(jī)D上(此主機(jī)為MASTER)
? ? ? ? ? ? ?
? ? 在主機(jī)E上(此主機(jī)為BACKUP)
? ? ?
通過對比可以看到虛擬IP在D主機(jī)上
????(2)、查看nginx是否啟動
?????通過腳本/etc/keepalived/notify.sh可以看到哪臺主機(jī)成為MASTER狀態(tài),哪臺主機(jī)就自動啟動nginx服務(wù)
????主機(jī)D
? ??
????主機(jī)E
? ??
通過對比可以知道主機(jī)D上的nginx服務(wù)啟動,而主機(jī)E上的nginx服務(wù)為啟動
(3)訪問URL
?????curl ?http:/172.16.1.10
? ? ?
? ? ?2、在主機(jī)D上創(chuàng)建/etc/keepalived/down文件
? ? ? ? ?touch ?/etc/keepalived/down
? ? ? ? (1)、查看虛擬IP位置
? ? ? ? ? ??在主機(jī)D上(此主機(jī)為MASTER)
? ? ? ? ? ??
?在主機(jī)E上(此主機(jī)為BACKUP)
? ? ? ? ? ??
?通過對比可以看到虛擬IP在E主機(jī)上
? ? ?(2)、查看nginx是否啟動
??????主機(jī)D
? ? ? ? ? ?
? ? ? ? ? ? ?主機(jī)E上
? ? ? ? ??
???????通過對比可以知道主機(jī)E上的nginx服務(wù)啟動,而主機(jī)D上的nginx服務(wù)為啟動
(3)訪問URL
?????curl ?http:/172.16.1.100
? ? ? ? ?
? ? ? ? ?能正常訪問,現(xiàn)實了高性能
第二部分實現(xiàn)主/主配置
一、增加配置在D、E主機(jī)上
????1、 在原有的配置基礎(chǔ)上增加一個vrrp_instance配置
????????在主機(jī)D上配置
? ? ? ?
? ? ? ??在主機(jī)E上配置
? ? ? ?
? ? 2、修改警告配置腳本
??????將backup時停止nginx服務(wù)改為啟動nginx服務(wù)
? ? ? ?
二、檢測
???1、不做修改時,即主機(jī)D和E上都沒有/etc/keepalived/down文件
?????(1)、查看虛擬IP位置
? ? ??在主機(jī)D上
? ? ??
?????在主機(jī)E上
? ? ??
通過對比看到:
????虛擬IP:172.16.1.100在主機(jī)D上
? ? ? ? ? ?虛擬IP:172.16.1.110在主機(jī)E上
?????(2)查看nginx服務(wù)狀態(tài)
? ? ? ? ??主機(jī)D、E的nginx服務(wù)都處于啟動狀態(tài)
? ? ? ? ??
? ? ?(3)訪問URL
??????curl ?http:/172.16.1.100
? ? ? ? ? ??
? ? ?curl ?http:/172.16.1.110
? ? ? ? ? ? ?
? ? ? ??? ?能正常訪問,現(xiàn)實了高性能
????2、在主機(jī)D上創(chuàng)建/etc/keepalived/down文件
? ? ? ??(1)、查看虛擬IP位置
? ? ? ? ? ? 在主機(jī)D上
? ? ? ? ? ?
? ? ? ? ?在主機(jī)E上
? ? ? ? ? ?
通過對比看到:
????虛擬IP:172.16.1.100在主機(jī)E上
? ? ? ? ? ?虛擬IP:172.16.1.110在主機(jī)E上
?????(2)查看nginx服務(wù)狀態(tài)
? ? ? ? ??主機(jī)D、E的nginx服務(wù)都處于啟動狀態(tài)
? ? ? ? ?
? ? ?(3)訪問URL
??????curl ?http:/172.16.1.100
? ? ? ? ? ??
? ? ?curl ?http:/172.16.1.110
? ? ? ? ? ? ?
? ? ? ? ??? ?能正常訪問,現(xiàn)實了高性能
????3、在主機(jī)E上創(chuàng)建/etc/keepalived/down文件
? ? ? ????(1)、查看虛擬IP位置
? ? ? ? ? ? 在主機(jī)D上
? ? ? ? ? ?
? ? ? ? ? ? 在主機(jī)E上
? ? ? ? ? ?
通過對比看到:
????虛擬IP:172.16.1.100在主機(jī)D上
? ? ? ? ? ?虛擬IP:172.16.1.110在主機(jī)D上
?????(2)查看nginx服務(wù)狀態(tài)
? ? ? ? ??主機(jī)D、E的nginx服務(wù)都處于啟動狀態(tài)
? ? ? ? ?
? ? ?(3)訪問URL
??????curl ?http:/172.16.1.100
? ? ? ? ? ??
? ? ?curl ?http:/172.16.1.110
? ? ? ? ? ? ?
? ? ? ? ??? ?能正常訪問,現(xiàn)實了高性能