搭建NTP服務集羣、高可用

一、原理算法

Keepalived 的做用是檢測後端服務器的狀態,若是有一臺服務器死機,或工做出現故障,Keepalived 將檢測到,並將有故障的服務器從系統中剔除。當服務器工做正常後 Keepalived 自動將服務器加入到服務器羣中,這些工做所有自動完成,不須要人工干涉,須要人工作的只是修復故障的服務器。apache

 

二、keepalived的做用vim

1.管理 VIP    後端

VIP 會在 LVS 之間漂移bash

運行在主分發的 Keepalived 會以組播的形式向網絡中宣告本身,即主分發器還活着,備用節點能收到。當備用節點,在一個時間單位中收不到組播,備用節點會認爲主 LVS 掛了,開始接手主分發器工做,把 VIP 配給本身。服務器

 

2.管理 RS網絡

Keepalived 會每隔一個時間段去作一次相似於訪問的操做如:oop

Udp端口檢測,使用nc 命令,跟相關參數實現。spa

 

三、使用Keepalived構建LVS-DR模式的高可用集羣rest

機器列表

主機名

ip

網關

做用

Dr1

Vip:10.1.19.50

 

Dr

Dr2 

Vip:10.1.19.50

 

Dr

RS1

RIP10.1.8.1

 

NTP Server1

RS2

RIP10.1.18.21

 

NTP Server2

RS3

RIP10.1.13.13

 

NTP Server3

四、Dr安裝ipvsadm、keepalived

兩臺Dr都要安裝

yum -y install ipvsadm

安裝完成不須要作任何配置,啓動方式由keepalived控制

yum install –y keepalived

 

五、主節點Dr1配置

# cp  keepalived.conf  keepalived.conf.bak

 

 

用MISC_CHECK來調用外部的腳本去判斷UDP端口是否開啓來作到UDP健康狀態檢查.

# mkdir -p /usr/local/scripts/keepalived/

# vim /usr/local/scripts/keepalived/UDP_CHECK.sh

#!/bin/bash

/bin/nc -uz -w1 $1 $2 >/dev/null

exit $?

 

# vim  /etc/keepalived/keepalived.conf

global_defs {

   router_id Dr1                       #標識當前節點名字,兩個節點的此項須要不相同。

}

 

vrrp_instance ntp {    #定義一個實例,一個集羣就是一個實例。 默認VI_1 能夠隨意改

    state MASTER        #指定 A 節點爲主節點 備用節點上設置爲 BACKUP 便可

    interface eth0        #綁定虛擬 IP 的網絡接口

    virtual_router_id 51   #VRRP 組名,兩個節點的設置必須同樣,以指明各個節點屬於同一 VRRP 

    priority 100          #主節點的優先級(1-254 之間),備用節點必須比主節點優先級低

    advert_int 1          #組播信息發送間隔,兩個節點設置必須同樣

    authentication {      #設置驗證信息,兩個節點必須一致 

        auth_type PASS

        auth_pass 1111

    }

    virtual_ipaddress {

        10.1.19.50     #指定虛擬 IP, 兩個節點設置必須同樣

    }

}

 

virtual_server 10.1.19.50 123 {    #對虛擬IP63添加LVS相關內容

    delay_loop 6                   #Keepalived 多長時間監測一次 RS

    lb_algo rr                      #分發算法

    lb_kind DR                     #DR 模式

protocol UDP

 

    real_server 10.1.8.1 123 {   

        weight 1                    

        MISC_CHECK {               

       misc_path "/usr/local/scripts/keepalived/UDP_CHECK.sh 10.1.8.1 123"

       misc_timeout 10

                }

  }

real_server 10.1.18.21 123 {

        weight 1

        MISC_CHECK {               

       misc_path "/usr/local/scripts/keepalived/UDP_CHECK.sh 10.1.18.21 123"

       misc_timeout 10

           }

}

real_server 10.1.13.13 123 {

        weight 1

        MISC_CHECK {               

       misc_path "/usr/local/scripts/keepalived/UDP_CHECK.sh 10.1.13.13 123"

       misc_timeout 10

     }

       }

 

   }

啓動keepalived服務

# systemctl restart keepalived

# systemctl enable keepalived

六、備節點Dr2配置

和主節點Dr1配置差很少,直接從Dr1上scp拷貝配置文件

# mkdir -p /usr/local/scripts/keepalived/

# vim /usr/local/scripts/keepalived/UDP_CHECK.sh

#!/bin/bash

/bin/nc -uz -w1 $1 $2 >/dev/null

exit $?

 

# scp /etc/keepalived/keepalived.conf 192.168.1.63:/etc/keepalived/

 

複製過來以後,還要作必定的修改:

#  vim /etc/keepalived/keepalived.conf

注:紅色爲改動項值

 router_id Dr1               #運行 keepalived 的機器標示符

}

vrrp_instance apache {

    state BACKUP            #當前 LVS 狀態爲備用分發器

    interface ens32

    virtual_router_id 51

    priority 90               #LVS 優先級,備的要比主的小

……

 

啓動keepalived服務

# systemctl restart keepalived

# systemctl enable keepalived

七、RealServer配置

三臺設備配置步驟相似故只列出一臺的配置。Ntp服務器已經搭建完成,ip都是配置好的故只須要配置迴環接口和關閉arp轉發

# vim /etc/init.d/add-vip

#!/bin/bash

VIP=10.1.19.50

 

. /etc/rc.d/init.d/functions

 

case "$1" in

start)

 ifconfig ens160:1 $VIP netmask 255.255.255.255 broadcast $VIP up

 /sbin/route add -host $VIP dev ens160:1

 echo "1" >/proc/sys/net/ipv4/conf/ens160/arp_ignore

 echo "2" >/proc/sys/net/ipv4/conf/ens160/arp_announce

 echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore

 echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce

 sysctl -p >/dev/null 2>&1

 echo "RealServer Start OK"

 ;;

stop)

 ifconfig ens160:1 down

 route del $VIP >/dev/null 2>&1

 echo "0" >/proc/sys/net/ipv4/conf/ens160/arp_ignore

 echo "0" >/proc/sys/net/ipv4/conf/ens160/arp_announce

 echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore

 echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce

 echo "RealServer Stoped"

 ;;

*)

 echo "Usage: $0 {start|stop}"

 exit 1

esac

 

exit 0

# chmod +x /etc/init.d/add-vip

關閉ARP轉發  注意:在三臺RS上都須要一樣的操做
# echo 1 > /proc/sys/net/ipv4/conf/ens160/arp_ignore
# echo 2 > /proc/sys/net/ipv4/conf/ens160/arp_announce


永久生效: (注意 realserver 的實際 link ok 的網卡是否是 eth0)
# vim /etc/sysctl.conf              #最後添加。
net.ipv4.conf.ens160.arp_ignore = 1
net.ipv4.conf. ens160.arp_announce = 2
或:
net.ipv4.conf.ens160.arp_ignore = 1
net.ipv4.conf.ens160.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2

# sysctl -p

相關文章
相關標籤/搜索