高可用Nginx
基于vrrp流動一個IP地址
- 各節點時間必須同步;
- 確保iptables以及selinux不會成為阻礙;
- 各節點之間可通過主機名互相同喜(對KA而言并非必須)
-
確保各節點的用于集群服務的接口支持MULTICAST通信
IPv4,D類地址224-239
環境:
node1:172.16.253.223 li1.jing.io node1 node2:172.16.253.224 li2.jing.io node2
1、同步時間nginx實現代理服務器功能
ntpdate 172.16.0.1 vim /etc/chrony.conf server 172.16.0.1 systemctl restart chronyd.service systemctl enable chronyd.service
2、停止firewalld或者添加規則放行多播信息
yum insstall iptables-services
3、編輯hosts文件
172.16.253.223 li1.jing.io node1 172.16.253.224 li2.jing.io node2
4、物理網卡確保出現MULITCAST(支持多播功能)
ip link set multicast on dev eno16777736 #開啟,off為關閉 #ifconfig可以查看
5、安裝keepalived
yum install keepalived -y
6、單主配置:
##hosts文件: 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 172.16.253.223 li1.jing.io node1 172.16.253.224 li2,jing,io node2 ##keepalived配置文件:(這個是node2,也就是備用節點的配置,到主節點需要更改為master和優先級,其他相關參數也需要更改,再次不做贅述) ! Configuration File for keepalived global_defs { notification_email { root@localhost } notification_email_from keepalived@localhost smtp_server 127.0.0.1 smtp_connect_timeout 30 router_id node2 vrrp_mcast_group4 224.1.104.44 } vrrp_instance VI_1 { state BACKUP interface ens33 virtual_router_id 51 priority 96 advert_int 1 authentication { auth_type PASS auth_pass lijing } virtual_ipaddress { 172.16.253.222/16 dev ens33 label ens33:0 } } scp ./keepalived.conf 172.16.253.224:/etc/keepalived/ #接下來是啟動keepalived,可以先啟動備用節點,再查看網卡信息配置,再去啟動主節點,查看網卡信息做出對比和結論
雙主:
配置兩個VIP,借助DNS實現一部分人去訪問VIP1,一部分人去訪問VIP2
##node1的文件配置 vrrp_instance VI_1 { state MASTER interface ens33 virtual_router_id 51 priority 100 advert_int 1 authentication { auth_type PASS auth_pass lijing } virtual_ipaddress { 172.16.253.222/16 dev ens33 } } vrrp_instance VI_2 { state BACKUP interface ens33 virtual_router_id 52 priority 96 advert_int 1 authentication { auth_type PASS auth_pass jingli } virtual_ipaddress { 172.16.253.221/16 dev ens33 } } ##node2文件配置: vrrp_instance VI_1 { statea BACKUP interface ens33 virtual_router_id 51 priority 96 advert_int 1 authentication { auth_type PASS auth_pass lijing } virtual_ipaddress { 172.16.253.222/16 dev ens33 } } vrrp_instance VI_2 { state MASTER interface ens33 virtual_router_id 52 priority 100 advert_int 1 authentication { auth_type PASS auth_pass jingli } virtual_ipaddress { 172.16.253.221/16 dev ens33 } }
構建DR類型的集群
基于keepalived做成高可用集群(兩個及以上的Director)
##兩個Director 172.16.253.223 #A 224 #B ##兩個RS 172.16.253.225 #R1 226 #R2 ##DR類型都橋接即可 #RS裝上httpd #Director安裝Nginx #同步時間 #RS1,2編輯主頁信息 vim /var/www/html/index.html #給出明顯信息即可 #啟動服務 #RS配置內核參數和IP地址: vim setre.sh #!/bin/bash # vip='172.16.0.99' netmask='255.255.255.255' iface='lo:0' case $1 in start) echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce echo 1 > /proc/sys/net/ipv4/conf/all/arp_announce ifconfig $iface $vip netmask $netmask broadcast $vip up route add -host $vip dev $iface ;; stop) ifconfig $iface down echo 0 > /proc/sys/net/ipv4/conf/all/arp_ignore echo 0 > /proc/sys/net/ipv4/conf/lo/arp_ignore echo 0 > /proc/sys/net/ipv4/conf/all/arp_announce echo 0 > /proc/sys/net/ipv4/conf/all/arp_announce ;; *) exit esac bash -n bash -x setrs.sh start scp setrs.sh 172.16.253.226:/root bash -x setrs.sh start ip a #查看 ##Director上生成規則,用keepalived生成 yum -y install ipvsadm #查看規則 vim keepalived.conf #編輯keepalived配置文件,其他配置參照之前的主主或者主備都可以,建議使用主備,實驗更加直觀 ##在vrrp的實例之外定義虛擬服務器 ##man文檔查看幫助 man keepalived.conf virtual server相關幫助,注意只支持tcp virtual_server 172.16.253.223 80 { #Director的VIP地址,兩臺Director上都要布置 delay_loop 1 lb_algo wrr lb_kind DR #集群是DR類型 protocol TCP sorry_server 127.0.0.1 80 #需要配置sorry_server real_server 172.16.253.225 { #是RS1 weight 1 #指明權重 HTTP_GET { #指明健康狀態檢測方式 url { #url可以指明多次 path /index.html #根據這個頁面做健康狀態檢測 status_code 200 #狀態碼響應為200,才為成功;校驗碼生成:curl -s http://172.16.253.225 | md5sum,這樣可以更加苛刻 } nb_get_retry #嘗試幾次 delay_before_retry 2 #每次嘗試延遲多長時間 connect_timeout #連接超時時長,默認5s,可以不寫 } } real_server 172.16.253.226 { #第二個RS weight 1 HTTP_GET { url { path /index.html status_code 200 } nb_get_retry delay_before_retry 2 connect_timeout } } }
配置sorry server:
不能只有一臺,兩臺Director都需要配置
yum -y install nginx systemctl start nginx.service #只要默認主頁啟動,就認為是sorry
nginx實現代理服務器功能
原創文章,作者:半斤八兩,如若轉載,請注明出處:http://www.www58058.com/78715