Nginx+keepalived實現(xiàn)七層的負(fù)載均衡的高可用(最新解決方案)
Nginx+keepalived實現(xiàn)七層的負(fù)載均衡的高可用
一、準(zhǔn)備服務(wù)器
1、主機清單
主機名 | ip | 系統(tǒng) |
---|---|---|
Proxy-master | 10.12.153.105 | centos7.5 |
Proxy-slave | 10.12.153.176 | centos7.5 |
Real-server1 | 10.12.153.114 | Centos7.5 |
Real-server2 | 10.12.153.187 | centos7.5 |
2、配置安裝nginx 所有的機器,關(guān)閉防火墻和selinux
[root@proxy-master ~]# systemctl stop firewalld //關(guān)閉防火墻 [root@proxy-master ~]# sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/sysconfig/selinux //關(guān)閉selinux,重啟生效 [root@proxy-master ~]# setenforce 0 //關(guān)閉selinux,臨時生效
3.安裝nginx, 全部4臺
[root@proxy-master ~]# cd /etc/yum.repos.d/ [root@proxy-master yum.repos.d]# vim nginx.repo [nginx-stable] name=nginx stable repo baseurl=http://nginx.org/packages/centos/$releasever/$basearch/ gpgcheck=0 enabled=1 [root@proxy-master yum.repos.d]# yum install yum-utils -y [root@proxy-master yum.repos.d]# yum install nginx -y
二、部署負(fù)載均衡
1、選擇兩臺nginx服務(wù)器作為代理服務(wù)器。
2、給兩臺代理服務(wù)器安裝keepalived制作高可用生成VIP
3、配置nginx的負(fù)載均衡
#兩臺代理配置一樣
1、修改nginx的配置文件,添加以下內(nèi)容,
#注意:將/etc/nginx/conf.d/default.conf改名,不然轉(zhuǎn)發(fā)不過去
[root@proxy-slave conf.d]# mv default.conf default.conf.back
upstream backend { server 10.12.153.114:80 weight=1 max_fails=3 fail_timeout=20s; server 10.12.153.187:80 weight=1 max_fails=3 fail_timeout=20s; } server { listen 80; server_name localhost; location / { proxy_pass http://backend; proxy_set_header Host $host:$proxy_port; proxy_set_header X-Forwarded-For $remote_addr; } }
2、重啟nginx
[root@proxy-master ~]# nginx -s reload
3.修改server1、server2的web頁面測試
[root@server2 ~]# cat >>/usr/share/nginx/html/index.html<<EOF > 187 > EOF [root@server1 html]# cat >/usr/share/nginx/html/index.html<<EOF > 114 > EOF
4..訪問負(fù)載均衡
負(fù)載均衡正常
三、Keepalived實現(xiàn)調(diào)度器HA
注:主/備調(diào)度器均能夠?qū)崿F(xiàn)正常調(diào)度
1、 主/備調(diào)度器安裝軟件
[root@proxy-master ~]# yum install -y keepalived [root@proxy-slave ~]# yum install -y keepalived
2、備份keepalived配置文件
[root@proxy-master ~]# cp /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.bak
3、修改配置文件
①修改master
[root@proxy-master ~]# vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived global_defs { router_id directory1 #輔助改為directory2 } : vrrp_instance VI_1 { state MASTER #定義主還是備 interface ens33 #VIP綁定接口 virtual_router_id 80 #整個集群的調(diào)度器一致 priority 100 #back改為50 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 10.12.153.151/24 # vip } }
②修改slave
[root@proxy-slave ~]# vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived global_defs { router_id directory2 } vrrp_instance VI_1 { state BACKUP #設(shè)置為backup interface ens33 nopreempt #設(shè)置到back上面,不搶占資源 virtual_router_id 80 priority 50 #輔助改為50 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 10.12.153.151/24 } }
4、啟動keepalived(主備均啟動)
[root@proxy-master ~]# systemctl enable keepalived [root@proxy-slave ~]# systemctl start keepalived
5、通過停止keepalived來測試VIP是否飄逸
①在master,slave上查看
②停掉master的keepalived來模仿master宕機,看VIP是否飄逸
由此可見nginx的高可用成功
到此:
可以解決心跳故障keepalived
不能解決Nginx服務(wù)故障
四、解決nginx服務(wù)故障
擴(kuò)展對調(diào)度器Nginx健康檢查(可選)兩臺都設(shè)置
1、作用
讓Keepalived以一定時間間隔執(zhí)行一個外部腳本,腳本的功能是當(dāng)Nginx失敗,則關(guān)閉本機的Keepalived
2、檢查nginx健康的腳本
! Configuration File for keepalived global_defs { router_id directory1 #輔助改為directory2 } : vrrp_script check_nginx { script "/etc/keepalived/check_nginx_status.sh" interval 5 } vrrp_instance VI_1 { state MASTER #定義主還是備 interface ens33 #VIP綁定接口 virtual_router_id 80 #整個集群的調(diào)度器一致 priority 100 #back改為50 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 10.12.153.151/24 # vip } track_script { check_nginx } }
注:必須先啟動nginx,再啟動keepalived
3、測試
停止master的nginx,VIP會飄逸到salve上,
再次啟動master的nginx,重啟master的keepalived,VIP會飄到master上。
到此這篇關(guān)于Nginx+keepalived實現(xiàn)七層的負(fù)載均衡的高可用的文章就介紹到這了,更多相關(guān)Nginx keepalived七層負(fù)載均衡內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- keepalived+nginx高可用實現(xiàn)方法示例
- Keepalived+Nginx+Tomcat 實現(xiàn)高可用Web集群的示例代碼
- nginx結(jié)合keepalived實現(xiàn)高可用的完整步驟
- Keepalived實現(xiàn)Nginx負(fù)載均衡高可用的示例代碼
- keepalived對nginx進(jìn)行高可用搭建及原理詳解
- Keepalived如何實現(xiàn)Nginx高可用
- keepalived?+?nginx?實現(xiàn)高可用方案
- 使用Nginx?+?Keepalived?實現(xiàn)高可用?Web?負(fù)載均衡筆記(虛擬機)
- Nginx高可用Keepalived的具體使用
- Nginx使用Keepalived部署web集群(高可用高性能負(fù)載均衡)實戰(zhàn)案例
- Keepalived搭建nginx高可用的實現(xiàn)
相關(guān)文章
Nginx中的用戶認(rèn)證配置及阻止用戶使用代理訪問的方法
這篇文章主要介紹了Nginx中的用戶認(rèn)證配置及阻止用戶使用代理訪問的方法,用戶認(rèn)證部分用到了自帶的ngx_http_auth_basic_module模塊,需要的朋友可以參考下2016-01-01Nginx代理導(dǎo)致請求頭某些內(nèi)容丟失的問題解決
本文主要介紹了在使用NGINX代理時請求頭中的下劃線被自動忽略的問題,通過兩種方法解決了這個問題,具有一定的參考價值,感興趣的可以了解一下2025-02-02深入理解nginx如何實現(xiàn)高性能和可擴(kuò)展性
這篇文章主要介紹了深入理解nginx如何實現(xiàn)高性能和可擴(kuò)展性,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-05-05Nginx安裝nginx-rtmp-module模塊的實現(xiàn)
nginx-rtmp-module是一個用于Nginx的第三方模塊,它使Nginx能夠支持實時多媒體流的傳輸和處理,本文主要介紹了Nginx安裝nginx-rtmp-module模塊,具有一定的參考價值,感興趣的可以了解一下2025-02-02