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