搭建NTP服務集群、高可用


1、原理

Keepalived 的作用是檢測后端服務器的狀態,如果有一台服務器死機,或工作出現故障,Keepalived 將檢測到,並將有故障的服務器從系統中剔除。當服務器工作正常后 Keepalived 自動將服務器加入到服務器群中,這些工作全部自動完成,不需要人工干涉,需要人工做的只是修復故障的服務器。

 

2、keepalived的作用

1.管理 VIP    

VIP 會在 LVS 之間漂移

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

 

2.管理 RS

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

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

 

3、使用Keepalived構建LVS-DR模式的高可用集群

機器列表

主機名

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

4、Dr安裝ipvsadm、keepalived

兩台Dr都要安裝

yum -y install ipvsadm

安裝完成不需要做任何配置,啟動方式由keepalived控制

yum install –y keepalived

 

5、主節點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

6、備節點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

7、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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM