高可用Nginx

高可用Nginx

基于vrrp流動一個IP地址

  1. 各節點時間必須同步;
  2. 確保iptables以及selinux不會成為阻礙;
  3. 各節點之間可通過主機名互相同喜(對KA而言并非必須)
  4. 確保各節點的用于集群服務的接口支持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

(0)
半斤八兩半斤八兩
上一篇 2017-06-28 08:45
下一篇 2017-06-28 14:28

相關推薦

  • 分享 (History,Ls,感悟 )

    1.History 選項   -c: 清空命令歷史   -d offset: 刪除歷史中指定的第offset個命令    n: 顯示最近的n條歷史   -a: 追加本次會話新執行的命令歷史列表至歷史文件   -n: 讀歷史文件中未讀過的行到歷史列表   -r: 讀歷史文件附加到歷史列表 &…

    2017-07-15
  • 馬哥linux 0728作業

    1,軟鏈接和硬鏈接的區別 硬鏈接有以下特性 1)文件有相同的 inode 及 data block; 2)只能對已存在的文件進行創建; 3)不能交叉文件系統進行硬鏈接的創建; 4)不能對目錄進行創建,只可對文件創建; 5)刪除一個硬鏈接文件并不影響其他有相同 inode 號的文件。 而軟鏈接有一下特性 1)軟鏈接有自己的文件屬性及權限等; 2)可對不存在的文…

    Linux干貨 2016-08-04
  • 文件查看和正則表達式

    文件查看工具         cat,tac,rev,more,less,head,tail cat:查看文本          cat [OPTION]… [FILE]… &…

    Linux干貨 2016-08-07
  • Linux mdadm命令解析

    mdadm命令解析 一,在Linux系統中目前MD(Multiple Devices)虛擬塊設備的方式實現軟件RAID,利用多個底層的塊設備虛擬出一個新的虛擬設備,并且利用條帶化(stripping)技術將數據塊均勻分布到多個磁盤上來提高虛擬設備的讀寫性能,利用不同的數據冗余算法來保護用戶數據不會因為某個塊設備的故障而完全丟失,而且還能在設備被替換后將丟失的…

    Linux干貨 2017-08-31
  • 馬哥教育第一天

    來到馬哥教育第一天,初步接觸IT,第一次寫博客,不知道寫點啥,記幾個地址吧。

    2018-03-26
  • 馬哥教育網絡班21期+第5周課程練習

    1.顯示/boot/grub/grub.conf中至少以一個空白字符開頭的行 [root@itop ~]# grep "^[[:space:]]\+" /boot/grub/grub.conf 2.顯示/etc/rc.d/rc.sysinit文件中以#開頭,后面至少一個空白字符,而后又有至少一個非空…

    Linux干貨 2016-08-08
欧美性久久久久