1. 程式人生 > >33 linux集群架構

33 linux集群架構

linux 集群架構

  • 簡介
    根據功能劃分為兩大類:高可用和負載均衡
    高可用集群通常為兩臺服務器,一臺工作,另外一臺作為冗余,當提供服務的機器宕機,冗余將接替繼續提供服務

    負載均衡集群,需要有一臺服務器作為分發器,它負責把用戶的請求分發給後端的服務器處理,在這個集群裏,除了分發器外,就是給用戶提供服務的服務器了,這些服務器數量至少為2

  • 高可用開源軟件:keepalived
    keepalived通過VRRP(Virtual Router Redundancy Protocl)來實現高可用。
    在這個協議裏會將多臺功能相同的路由器組成一個小組,這個小組裏會有1個master角色和N(N>=1)個backup角色。
    master會通過組播的形式向各個backup發送VRRP協議的數據包,當backup收不到master發來的VRRP數據包時,就會認為master宕機了。此時就需要根據各個backup的優先級來決定誰成為新的mater。

    Keepalived要有三個模塊,分別是core、check和vrrp。其中core模塊為keepalived的核心,負責主進程的啟動、維護以及全局配置文件的加載和解析,check模塊負責健康檢查,vrrp模塊是來實現VRRP協議的。

    配置
    準備兩臺機器131和130,131作為master,130作為backup
    兩臺機器都執行yum install -y keepalived
    兩臺機器都安裝nginx,其中131上已經編譯安裝過nginx,130上需要yum安裝nginx: yum install -y nginx
    設定vip(虛擬ip,主從公有的ip,主機宕機時按照此ip繼續解析可以從機接上)為100
    vim /etc/keepalived/keepalived.conf刪除原有內容,編輯131上keepalived配置文件,內容從https://coding.net/u/aminglinux/p/aminglinux-book/git/blob/master/D21Z/master_keepalived.conf 獲取

    vim /usr/local/sbin/check_ng.sh 131編輯監控腳本,內容從https://coding.net/u/aminglinux/p/aminglinux-book/git/blob/master/D21Z/master_check_ng.sh 獲取
    給腳本755權限
    systemctl start keepalived 131啟動服務

    130上編輯配置文件,內容從https://coding.net/u/aminglinux/p/aminglinux-book/git/blob/master/D21Z/backup_keepalived.conf 獲取
    130上編輯監控腳本,內容從https://coding.net/u/aminglinux/p/aminglinux-book/git/blob/master/D21Z/backup_check_ng.sh 獲取

    給腳本755權限
    130上也啟動服務 systemctl start keepalived

  • 均衡負載開源軟件:LVS
    NAT模式
    三臺機器
    分發器,也叫調度器(簡寫為dir)
    內網:133.130,外網:142.147(vmware僅主機模式)
    rs1
    內網:133.132,設置網關為133.130
    rs2
    內網:133.133,設置網關為133.130
    三臺機器上都執行執行
    systemctl stop firewalld; systemc disable firewalld
    systemctl start iptables-services; iptables -F; service iptables save
    在dir上安裝ipvsadm
    yum install -y ipvsadm
    在dir上編寫腳本,vim /usr/local/sbin/lvs_nat.sh//內容如下
    #! /bin/bash
    #director 服務器上開啟路由轉發功能
    echo 1 > /proc/sys/net/ipv4/ip_forward
    #關閉icmp的重定向
    echo 0 > /proc/sys/net/ipv4/conf/all/send_redirects
    echo 0 > /proc/sys/net/ipv4/conf/default/send_redirects
    #註意區分網卡名字,阿銘的兩個網卡分別為ens33和ens37
    echo 0 > /proc/sys/net/ipv4/conf/ens33/send_redirects
    echo 0 > /proc/sys/net/ipv4/conf/ens37/send_redirects
    #director 設置nat防火墻
    iptables -t nat -F
    iptables -t nat -X
    iptables -t nat -A POSTROUTING -s 192.168.133.0/24 -j MASQUERADE
    #director設置ipvsadm
    IPVSADM=‘/usr/sbin/ipvsadm‘
    $IPVSADM -C
    $IPVSADM -A -t 192.168.147.144:80 -s wlc -p 3
    $IPVSADM -a -t 192.168.147.144:80 -r 192.168.133.132:80 -m -w 1
    $IPVSADM -a -t 192.168.147.144:80 -r 192.168.133.133:80 -m -w 1

    DR模式
    三臺機器
    分發器,也叫調度器(簡寫為dir)
    133.130
    rs1
    133.132
    rs2
    133.133
    vip
    133.200
    dir上編寫腳本 vim /usr/local/sbin/lvs_dr.sh //內容如下
    #! /bin/bash
    echo 1 > /proc/sys/net/ipv4/ip_forward
    ipv=/usr/sbin/ipvsadm
    vip=192.168.133.200
    rs1=192.168.133.132
    rs2=192.168.133.133
    #註意這裏的網卡名字
    ifconfig ens33:2 $vip broadcast $vip netmask 255.255.255.255 up
    route add -host $vip dev ens33:2
    $ipv -C
    $ipv -A -t $vip:80 -s wrr
    $ipv -a -t $vip:80 -r $rs1:80 -g -w 1
    $ipv -a -t $vip:80 -r $rs2:80 -g -w 1
    兩臺rs上也編寫腳本 vim /usr/local/sbin/lvs_rs.sh//內容如下
    #/bin/bash
    vip=192.168.133.200
    #把vip綁定在lo上,是為了實現rs直接把結果返回給客戶端
    ifconfig lo:0 $vip broadcast $vip netmask 255.255.255.255 up
    route add -host $vip lo:0
    #以下操作為更改arp內核參數,目的是為了讓rs順利發送mac地址給客戶端
    #參考文檔www.cnblogs.com/lgfeng/archive/2012/10/16/2726308.html
    echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
    echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
    echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
    echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
    分別在dir上和兩個rs上執行這些腳本

    Keepalived+LVS
    完整架構需要兩臺服務器(角色為dir)分別安裝keepalived軟件,目的是實現高可用,但keepalived本身也有負載均衡的功能,所以本次實驗可以只安裝一臺keepalived
    keepalived內置了ipvsadm的功能,所以不需要再安裝ipvsadm包,也不用編寫和執行那個lvs_dir的腳本
    三臺機器分別為:
    dir(安裝keepalived)133.130
    rs1 133.132
    rs2 133.133
    vip 133.200
    編輯keepalived配置文件 vim /etc/keepalived/keepalived.conf//內容請到https://coding.net/u/aminglinux/p/aminglinux-book/git/blob/master/D21Z/lvs_keepalived.conf 獲取
    需要更改裏面的ip信息
    執行ipvsadm -C 把之前的ipvsadm規則清空掉
    systemctl restart network 可以把之前的vip清空掉
    兩臺rs上,依然要執行/usr/local/sbin/lvs_rs.sh腳本
    keepalived有一個比較好的功能,可以在一臺rs宕機時,不再把請求轉發過去
    測試

  • 33 linux集群架構