搭建Keepalived+LVS集群

(1).Keepalived概述

  keepalived 是一个类似于 layer3, 4 & 5 交换机制的软件,也就是我们平时说的第 3 层、第 4 层和第 5层交换。 Keepalived 的作用是检测 web 服务器的状态,如果有一台 web 服务器死机,或工作出现故障,Keepalived 将检测到,并将有故障的 web 服务器从系统中剔除,当 web 服务器工作正常后 Keepalived 自动将web 服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的web 服务器。

(2).Keepalived工作原理

  Layer3,4&5 工作在 IP/TCP 协议栈的 IP 层, TCP 层,及应用层,。

  Layer3: Keepalived 使用 Layer3 的方式工作式时, Keepalived 会定期向服务器群中的服务器发送一个 ICMP 的数据包(即我们平时用的 Ping 程序) , 如果发现某台服务的 IP 地址没有激活,Keepalived 便报告这台服务器失效,并将它从服务器群中剔除,这种情况的典型例子是某台服务器被非法关机。 Layer3 的方式是以服务器的 IP 地址是否有效作为服务器工作正常与否的标准。

  Layer4: 主要以 TCP 端口的状态来决定服务器工作正常与否。如 web server 的服务端口一般是80,如果 Keepalived 检测到 80 端口没有启动,则 Keepalived 将把这台服务器从服务器群中删除。

  Layer5: Layer5 就是工作在具体的应用层了,比 Layer3,Layer4 要复杂一点,在网络上占用的带宽也要大一些。 Keepalived 将根据用户的设定检查服务器程序的运行是否正常,如果与用户的设定不相符,则 Keepalived 将把服务器从服务器群中剔除。

  以上摘自百度百科:Keepalived_百度百科

(3).keepalived的作用

  1.管理VIP使VIP在LVS之间漂移;

  2.监控LVS分发器。运行在主分发器上的keepalived会以组播的形式向网络中宣告自身的存在,即告诉备用分发器一件事——主分发器是否还存活。当备用分发器在一个单位时间内收不到组播,备用分发器就会认为主分发器挂了,开始接手主分发器的工作,并将VIP分配给自己;

  3.管理RS(真实服务器)。keepalived会每隔一个时间段去做一次类似访问的操作。探针elinks -dump http://[IP地址:端口号]

  经典高可用web架构: LVS+keepalived+nginx+apache+php+eaccelerator(+nfs可选)

(4).实验环境

youxi1  192.168.5.100(VIP)、192.168.5.101(DIP)  主分发器

youxi2  192.168.5.100(VIP)、192.168.5.102(DIP)  备用分发器

youxi3  192.168.5.103  真实服务器1

youxi4  192.168.5.104  真实服务器2

(5).实验

  keepalived下载地址:Keepalived for Linux,下载完成后上传到主分发器youxi1和备用分发器youxi2

 1)在主分发器youxi1上搭建keepalived+LVS-DR

  安装ipvsadm,不需要配置VIP,要么本地源,要么epel源

1

[root@youxi1 ~]# yum -y install ipvsadm

  安装keepalived的依赖包

1

[root@youxi1 ~]# yum -y install gcc openssl-devel libnfnetlink-devel libnl libnl3-devel

  源码安装keepalived

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

[root@youxi1 ~]# tar zxf keepalived-1.4.5.tar.gz -C /usr/local/src/

[root@youxi1 ~]# cd /usr/local/src/keepalived-1.4.5/

[root@youxi1 keepalived-1.4.5]# ./configure --prefix=/usr/local/keepalived  //最后会出现一下报表

Keepalived configuration

------------------------

Keepalived version : 1.4.5

Compiler : gcc

Preprocessor flags : -I/usr/include/libnl3

Compiler flags : -Wall -Wunused -Wstrict-prototypes -Wextra -g -O2 -D_GNU_SOURCE -fPIE

Linker flags : -pie

Extra Lib : -lcrypto -lssl -lnl-genl-3 -lnl-3

Use IPVS Framework : Yes

IPVS use libnl : Yes

IPVS syncd attributes : No

IPVS 64 bit stats : No

fwmark socket support : Yes

Use VRRP Framework : Yes

Use VRRP VMAC : Yes

Use VRRP authentication : Yes

With ip rules/routes : Yes

SNMP vrrp support : No

SNMP checker support : No

SNMP RFCv2 support : No

SNMP RFCv3 support : No

DBUS support : No

SHA1 support : No

Use Debug flags : No

smtp-alert debugging : No

Use Json output : No

Stacktrace support : No

Memory alloc check : No

libnl version : 3

Use IPv4 devconf : No

Use libiptc : No

Use libipset : No

init type : systemd

Build genhash : Yes

Build documentation : No

[root@youxi1 keepalived-1.4.5]# make && make install

[root@youxi1 keepalived-1.4.5]# echo $?

0

  ./configure产生的参数报表中:

    Use IPVS Framework表示使用IPVS框架,即LVS的核心代码,如果不想使用LVS可以在./configure时指定--disable-lvs参数,这里就会显示NO了;

    IPVS use libnl表示IPVS使用新版的libnl,libnl是NTTLINK的一个实现,其实就是支持IPv6的LVS;

    Use VRRP Framework表示使用VRRP框架,这是必须的,是keepalived的核心进程VRRPD;

  生成启动脚本文件

1

2

3

4

5

6

7

8

9

[root@youxi1 keepalived-1.4.5]# cp keepalived/etc/init.d/keepalived /etc/init.d/

[root@youxi1 keepalived-1.4.5]# vim /etc/init.d/keepalived

//也可以不改这一行,但需要新建一个参数文件,或将参数文件拷贝过去

. /usr/local/keepalived/etc/sysconfig/keepalived  //第15行

[root@youxi1 keepalived-1.4.5]# chmod +x /etc/init.d/keepalived

//做一个软链接给启动脚本文件使用

[root@youxi1 keepalived-1.4.5]# ln -s /usr/local/keepalived/sbin/keepalived /usr/sbin/

[root@youxi1 keepalived-1.4.5]# vim /usr/local/keepalived/etc/sysconfig/keepalived  //修改参数文件

KEEPALIVED_OPTIONS="-D -f /usr/local/keepalived/etc/keepalived/keepalived.conf"  //指向配置文件

  修改配置文件etc/keepalived/keepalived.conf,keepalived配置文件参数详见:keepalived 配置文件参数详解_誠寜的博客-CSDN博客_vrrp_skip_check_adv_addr

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

[root@youxi1 keepalived-1.4.5]# vim /usr/local/keepalived/etc/keepalived/keepalived.conf

! Configuration File for keepalived

global_defs {

  #邮件功能一般没用

   notification_email {  #指定当keepalived出现问题时,发送邮件给哪些用户

   root@localhost

   }

   notification_email_from root@localhost  #指定发件人

   smtp_server localhost  #指定SMTP服务器地址

   smtp_connect_timeout 30  #指定SMTP连接超时时间

   router_id youxi1  #标识当前节点名称,不允许重复

}

vrrp_instance VI_1 {  #定义一个实例,一个实例就是一个集群,实例名称VI_1可以更改

    state MASTER  #指定该节点为主节点

    interface ens33  #指定VIP的网络接口

    virtual_router_id 51  #指定VRRP组名,主节点和备用节点需要配置相同VRRP组名

    priority 100  #优先级,范围1~254,数学数值比较,越大优先级越高。主节点优先级必须高于备用节点

    advert_int 1  #组播信息发送间隔,单位秒,主节点备用节点必须设置一致

    authentication {  #设置验证信息,主节点备用节点必须设置一致

        auth_type PASS  #指定认证方法,PASS简单密码认证

        auth_pass 1111  #指定认证所使用的密码,最多8位

    }

    virtual_ipaddress {  #指定VIP,主节点备用节点必须一致

        192.168.5.100

    }

}

virtual_server 192.168.5.100 80 {  #对VIP为192.168.5.100,端口号为80的服务器添加相关信息

    delay_loop 6  #keepalived多长时间监测一次真实服务器,单位秒

    lb_algo rr  #LVS调度算法

    lb_kind DR  #LVS-DR模式

    persistence_timeout 50  #同一个IP50秒内的请求都会发到同一个真实服务器,会影响rr算法调度,测试时可以注释掉

    protocol TCP  #4层协议

    real_server 192.168.5.103 80 {  #对IP为192.168.5.103,端口号为80的真实服务器添加相关信息

        weight 1  #指定权重,默认为1

        TCP_CHECK{

            connect_timeout 3  #连接超时时间,默认5秒

            nb_get_retry 3  #重试次数,默认1次

            delay_before_retry 3  #重试时间间隔,默认1秒

            connect_port 80  #监测端口号

        }

    }

    real_server 192.168.5.104 80 {  #对IP为192.168.5.104,端口号为80的真实服务器添加相关信息

        weight 1

        TCP_CHECK{

            connect_timeout 3

            nb_get_retry 3

            delay_before_retry 3

            connect_port 80

        }

    }

}

  启动keepalived,并设置开机自启

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

[root@youxi1 keepalived-1.4.5]# systemctl start keepalived.service

[root@youxi1 keepalived-1.4.5]# systemctl enable keepalived.service

Created symlink from /etc/systemd/system/multi-user.target.wants/keepalived.service to /usr/lib/systemd/system/keepalived.service.

[root@youxi1 keepalived-1.4.5]# systemctl status keepalived.service

● keepalived.service - LVS and VRRP High Availability Monitor

   Loaded: loaded (/usr/lib/systemd/system/keepalived.service; enabled; vendor preset: disabled)

   Active: active (running) since 二 2019-07-23 16:40:45 CST; 14s ago

 Main PID: 4645 (keepalived)

   CGroup: /system.slice/keepalived.service

           ├─4645 /usr/local/keepalived/sbin/keepalived -D -f /usr/local/keep...

           ├─4646 /usr/local/keepalived/sbin/keepalived -D -f /usr/local/keep...

           └─4647 /usr/local/keepalived/sbin/keepalived -D -f /usr/local/keep...

7月 23 16:40:52 youxi1 Keepalived_vrrp[4647]: Sending gratuitous ARP on ens...0

7月 23 16:40:52 youxi1 Keepalived_vrrp[4647]: Sending gratuitous ARP on ens...0

7月 23 16:40:52 youxi1 Keepalived_vrrp[4647]: Sending gratuitous ARP on ens...0

7月 23 16:40:52 youxi1 Keepalived_vrrp[4647]: Sending gratuitous ARP on ens...0

7月 23 16:40:54 youxi1 Keepalived_healthcheckers[4646]: TCP connection to [1...

7月 23 16:40:57 youxi1 Keepalived_healthcheckers[4646]: TCP connection to [1...

7月 23 16:40:57 youxi1 Keepalived_healthcheckers[4646]: Check on service [19...

7月 23 16:40:57 youxi1 Keepalived_healthcheckers[4646]: Removing service [19...

7月 23 16:40:57 youxi1 Keepalived_healthcheckers[4646]: Remote SMTP server [...

7月 23 16:40:57 youxi1 Keepalived_healthcheckers[4646]: SMTP alert successfu...

Hint: Some lines were ellipsized, use -l to show in full.

  查看ipvsadm规则以及状态

1

2

3

4

5

6

7

8

9

[root@youxi1 keepalived-1.4.5]# ipvsadm -Ln

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn

TCP  192.168.5.100:80 rr persistent 50

[root@youxi1 keepalived-1.4.5]# systemctl status ipvsadm.service  //并没有启动ipvsadm服务

● ipvsadm.service - Initialise the Linux Virtual Server

   Loaded: loaded (/usr/lib/systemd/system/ipvsadm.service; disabled; vendor preset: disabled)

   Active: inactive (dead)

  如果防火墙是开启状态,请添加端口号

1

2

3

[root@youxi1 keepalived-1.4.5]# firewall-cmd --permanent --zone=public --add-port=80/tcp && firewall-cmd --reload

success

success

 2)在备用分发器youxi2上搭建keepalived+LVS-DR

  和主分发器youxi1基本一样,只有在修改配置文件etc/keepalived/keepalived.conf时略有不同

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

[root@youxi2 keepalived-1.4.5]# vim /usr/local/keepalived/etc/keepalived/keepalived.conf

! Configuration File for keepalived

global_defs {

   notification_email {

   root@localhost

   }

   notification_email_from root@localhost

   smtp_server localhost

   smtp_connect_timeout 30

   router_id youxi2  //修改

}

vrrp_instance VI_1 {

    state BACKUP  //修改

    interface ens33

    virtual_router_id 51

    priority 90  //修改

    advert_int 1

    authentication {

        auth_type PASS

        auth_pass 1111

    }

    virtual_ipaddress {

        192.168.5.100

    }

}

virtual_server 192.168.5.100 80 {

    delay_loop 6

    lb_algo rr

    lb_kind DR

    persistence_timeout 50

    protocol TCP

    real_server 192.168.5.103 80 {

        weight 1

        TCP_CHECK{

            connect_timeout 3

            nb_get_retry 3

            delay_before_retry 3

            connect_port 80

        }

    }

    real_server 192.168.5.104 80 {

        weight 1

        TCP_CHECK{

            connect_timeout 3

            nb_get_retry 3

            delay_before_retry 3

            connect_port 80

        }

    }

}

  正常启动keepalived,并设置开机自启

1

2

3

[root@youxi2 keepalived-1.4.5]# systemctl start keepalived.service

[root@youxi2 keepalived-1.4.5]# systemctl enable keepalived.service

Created symlink from /etc/systemd/system/multi-user.target.wants/keepalived.service to /usr/lib/systemd/system/keepalived.service.

  防火墙如果是开启状态记得添加端口号。注意:备用节点比主节点多添加一个vrrp协议规则(如果是iptables,那么就是iptables -A INPUT -p VRRP -j ACCEPT)。

1

2

3

4

5

[root@youxi2 keepalived-1.4.5]# firewall-cmd --permanent --zone=public --add-protocol=vrrp

success

[root@youxi2 keepalived-1.4.5]# firewall-cmd --permanent --zone=public --add-port=80/tcp && firewall-cmd --reload

success

success

 3)测试VIP漂移

  查看主节点和备用节点的ip地址

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

[root@youxi1 keepalived-1.4.5]# ip a sh dev ens33

2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000

    link/ether 00:0c:29:e6:d6:27 brd ff:ff:ff:ff:ff:ff

    inet 192.168.5.101/24 brd 192.168.5.255 scope global noprefixroute ens33

       valid_lft forever preferred_lft forever

    inet 192.168.5.100/32 scope global ens33

       valid_lft forever preferred_lft forever

    inet6 fe80::201:7257:85b:7dc8/64 scope link noprefixroute

       valid_lft forever preferred_lft forever

[root@youxi2 keepalived-1.4.5]# ip a sh dev ens33

2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000

    link/ether 00:0c:29:75:fa:5d brd ff:ff:ff:ff:ff:ff

    inet 192.168.5.102/24 brd 192.168.5.255 scope global noprefixroute ens33

       valid_lft forever preferred_lft forever

    inet6 fe80::5b8e:3731:3ac1:e7d7/64 scope link noprefixroute

       valid_lft forever preferred_lft forever

    inet6 fe80::201:7257:85b:7dc8/64 scope link tentative noprefixroute dadfailed

       valid_lft forever preferred_lft forever

  停止主节点的keepalived,再查看主节点和备用节点IP

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

[root@youxi1 keepalived-1.4.5]# systemctl stop keepalived.service

[root@youxi1 keepalived-1.4.5]# ip a sh dev ens33

2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000

    link/ether 00:0c:29:e6:d6:27 brd ff:ff:ff:ff:ff:ff

    inet 192.168.5.101/24 brd 192.168.5.255 scope global noprefixroute ens33

       valid_lft forever preferred_lft forever

    inet6 fe80::201:7257:85b:7dc8/64 scope link noprefixroute

       valid_lft forever preferred_lft forever

[root@youxi2 keepalived-1.4.5]# ip a sh dev ens33

2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000

    link/ether 00:0c:29:75:fa:5d brd ff:ff:ff:ff:ff:ff

    inet 192.168.5.102/24 brd 192.168.5.255 scope global noprefixroute ens33

       valid_lft forever preferred_lft forever

    inet 192.168.5.100/32 scope global ens33

       valid_lft forever preferred_lft forever

    inet6 fe80::5b8e:3731:3ac1:e7d7/64 scope link noprefixroute

       valid_lft forever preferred_lft forever

    inet6 fe80::201:7257:85b:7dc8/64 scope link tentative noprefixroute dadfailed

       valid_lft forever preferred_lft forever

  测试完记得开启主节点youxi1的keepalived

 4)搭建真实服务器1youix3

  配置回环口lo:1为VIP

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

[root@youxi3 ~]# cd /etc/sysconfig/network-scripts/

[root@youxi3 network-scripts]# cp ifcfg-lo{,:1}

[root@youxi3 network-scripts]# vim ifcfg-lo:1

DEVICE=lo:1  //修改

IPADDR=192.168.5.100  //修改

NETMASK=255.255.255.255  //修改

#iNETWORK=127.0.0.0  //注释

# If you're having problems with gated making 127.0.0.0/8 a martian,

# you can change this to something else (255.255.255.255, for example)

#BROADCAST=127.255.255.255  //注释

ONBOOT=yes

NAME=loopback

[root@youxi3 network-scripts]# systemctl restart network

[root@youxi3 network-scripts]# ip a sh dev lo          

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000

    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

    inet 127.0.0.1/8 scope host lo

       valid_lft forever preferred_lft forever

    inet 192.168.5.100/32 brd 192.168.5.100 scope global lo:1

       valid_lft forever preferred_lft forever

    inet6 ::1/128 scope host

       valid_lft forever preferred_lft forever

  搭建一个简易的网页

1

2

3

4

5

[root@youxi3 network-scripts]# yum -y install httpd

[root@youxi3 network-scripts]# systemctl start httpd.service

[root@youxi3 network-scripts]# systemctl enable httpd.service

Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.

[root@youxi3 network-scripts]# echo youxi3 > /var/www/html/index.html

  如果防火墙是开启状态,记得添加端口号

1

2

3

[root@youxi3 ~]# firewall-cmd --permanent --zone=public --add-port=80/tcp && firewall-cmd --reload

success

success

 5)搭建真实服务器2youxi4

  基本和搭建youxi3一样,只是index.html内容改为youxi4,方便测试。

 6)测试

  注释掉persistence_timeout参数,然后重启

  在Windows上查看

  停掉youxi1上的keepalived,再次查看,中间会有几秒的断开,

(6).实现keepalived两台服务器互为主从

  在以上基础实现keepalived互为主从,添加另一个VIP192.168.5.105,这次youxi2作为Master,youxi1作为Backup。

  在youxi1上修改配置文件,添加实例和对应主机,最后重启keepalived

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

[root@youxi1 ~]# vim /usr/local/keepalived/etc/keepalived/keepalived.conf

vrrp_instance VI_2 {  #添加一个新的实例

    state BACKUP  #youxi1作为BACKUP

    interface ens33

    virtual_router_id 52  #VRRP组名IP

    priority 90  #优先级要低于同实例的youxi2服务器

    advert_int 1

    authentication {  #验证信息

        auth_type PASS

        auth_pass 2222

    }

    virtual_ipaddress {

        192.168.5.105

    }

}

virtual_server 192.168.5.105 80 {  //添加一个实例对应的虚拟服务器

    delay_loop 6

    lb_algo rr

    lb_kind DR

#    persistence_timeout 50

    protocol TCP

    real_server 192.168.5.103 80 {

        weight 1

        TCP_CHECK{

            connect_timeout 3

            nb_get_retry 3

            delay_before_retry 3

            connect_port 80

        }

    }

    real_server 192.168.5.104 80 {

        weight 1

        TCP_CHECK{

            connect_timeout 3

            nb_get_retry 3

            delay_before_retry 3

            connect_port 80

        }

    }

}<br>[root@youxi1 ~]# systemctl restart keepalived.service  //重启服务

  在youxi2上修改配置文件,添加实例和对应主机,并重启服务

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

[root@youxi2 ~]# vim /usr/local/keepalived/etc/keepalived/keepalived.conf

vrrp_instance VI_2 {

    state MASTER

    interface ens33

    virtual_router_id 52

    priority 100

    advert_int 1

    authentication {

        auth_type PASS

        auth_pass 2222

    }

    virtual_ipaddress {

        192.168.5.105

    }

}

virtual_server 192.168.5.105 80 {

    delay_loop 6

    lb_algo rr

    lb_kind DR

#    persistence_timeout 50

    protocol TCP

    real_server 192.168.5.103 80 {

        weight 1

        TCP_CHECK{

            connect_timeout 3

            nb_get_retry 3

            delay_before_retry 3

            connect_port 80

        }

    }

    real_server 192.168.5.104 80 {

        weight 1

        TCP_CHECK{

            connect_timeout 3

            nb_get_retry 3

            delay_before_retry 3

            connect_port 80

        }

    }

}

[root@youxi2 ~]# systemctl restart keepalived.service

  添加youxi3和youxi4的回环口lo:2了

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

[root@youxi3 ~]# cd /etc/sysconfig/network-scripts/

[root@youxi3 network-scripts]# cp ifcfg-lo{:1,:2}

[root@youxi3 network-scripts]# vim ifcfg-lo:2

DEVICE=lo:2

IPADDR=192.168.5.105

NETMASK=255.255.255.255

#iNETWORK=127.0.0.0

# If you're having problems with gated making 127.0.0.0/8 a martian,

# you can change this to something else (255.255.255.255, for example)

#BROADCAST=127.255.255.255

ONBOOT=yes

NAME=loopback

[root@youxi3 network-scripts]# systemctl restart network

[root@youxi4 ~]# cd /etc/sysconfig/network-scripts/

[root@youxi4 network-scripts]# cp ifcfg-lo{:1,:2}

[root@youxi4 network-scripts]# vim ifcfg-lo:2

DEVICE=lo:2

IPADDR=192.168.5.105

NETMASK=255.255.255.255

#NETWORK=127.0.0.0

# If you're having problems with gated making 127.0.0.0/8 a martian,

# you can change this to something else (255.255.255.255, for example)

#BROADCAST=127.255.255.255

ONBOOT=yes

NAME=loopback

[root@youxi4 network-scripts]# systemctl restart network

  如果防火墙开启,记得给youxi1添加vrrp协议通过

1

2

3

[root@youxi1 ~]# firewall-cmd --permanent --zone=public --add-protocol=vrrp && firewall-cmd --reload

success

success

  这样就做成了主从了

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

[root@youxi1 ~]# ip a sh dev ens33  //youxi1上只有100,而没有105

2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000

    link/ether 00:0c:29:e6:d6:27 brd ff:ff:ff:ff:ff:ff

    inet 192.168.5.101/24 brd 192.168.5.255 scope global noprefixroute ens33

       valid_lft forever preferred_lft forever

    inet 192.168.5.100/32 scope global ens33

       valid_lft forever preferred_lft forever

    inet6 fe80::201:7257:85b:7dc8/64 scope link noprefixroute

       valid_lft forever preferred_lft forever

[root@youxi2 ~]# ip a sh dev ens33  //youxi2上只有105,而没有100

2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000

    link/ether 00:0c:29:75:fa:5d brd ff:ff:ff:ff:ff:ff

    inet 192.168.5.102/24 brd 192.168.5.255 scope global noprefixroute ens33

       valid_lft forever preferred_lft forever

    inet 192.168.5.105/32 scope global ens33

       valid_lft forever preferred_lft forever

    inet6 fe80::5b8e:3731:3ac1:e7d7/64 scope link noprefixroute

       valid_lft forever preferred_lft forever

    inet6 fe80::201:7257:85b:7dc8/64 scope link tentative noprefixroute dadfailed

       valid_lft forever preferred_lft forever

  测试

(7).扩展:

  VRRP是一种路由容错协议,也可以叫做备份路由协议。一个局域网络内的所有主机都设置缺省路由(默认网关),当网内主机发出的目的地址不在本网段时,报文将被通过缺省路由发往外部路由器,从而实现了主机与外部网络的通信。当缺省路由器down掉(即端口关闭)之后,内部主机将无法与外部通信,如果路由器设置了VRRP时,那么这时,虚拟路由将启用备份路由器,从而实现全网通信。

  HSRP:热备份路由器协议(HSRP)的设计目标是支持特定情况下 IP 流量失败转移不会引起混乱、并允许主机使用单路由器,以及即使在实际第一跳路由器使用失败的情形下仍能维护路由器间的连通性。换句话说,当源主机不能动态知道第一跳路由器的 IP 地址时,HSRP 协议能够保护第一跳路由器不出故障,是CISCO的私有协议!该协议中含有多台路由器,对应一个HSRP组。该组中只有一个路由器承担转发用户流量的职责,这就是活动路由器。当活动路由器失效后,备份路由器将承担该职责,成为新的活动路由器。这就是热备份的原理。

  HSRP和VRRP的区别:HSRP是cisco的专有协议.在Cisco的HSRP之后,internet工程任务小组(internet  engineering task force,IETF)也制定一种路由冗余协议:虚拟路由冗余协议(Virtual  Router  Redundancy  Protocol,VRRP),目前包括Csico在内的主流厂商均在其产品中支持VRRP协议!VRRP和HSRP也有很多不同。VRRP和HSRP 的一个主要的区别在安全方面:它允许参与VRRP组的设备间建立认证机制 。另一个主要区别 :VRRP中只有三种状态----初始状态(Initialize)、主状态(Master)、备份状态(Backup),而HSRP 有六种状态。其余在报文类型 、报文格式和通过TCP而非UDP发送的报文方面也有所不同

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现基于 Keepalived + LVS 的高可用集群,您可以按照下面的步骤操作: 1. 安装 KeepalivedLVS 您需要在每个服务器上安装 KeepalivedLVSKeepalived 是一个实现 VRRP 协议的工具,用于实现服务器之间的故障切换。LVS 是一个 Linux 负载均衡器,可以将流量分发到多个后端服务器上。 2. 配置 LVS 在配置 LVS 之前,您需要先确定负载均衡器的 IP 地址和后端服务器的 IP 地址。您可以在 LVS 上配置虚拟 IP 地址,然后将请求转发到后端服务器上。 3. 配置 Keepalived 在配置 Keepalived 之前,您需要确定一个主节点和多个备份节点。主节点将拥有虚拟 IP 地址,并将请求转发到后端服务器上。如果主节点发生故障,备份节点将接管虚拟 IP 地址,并继续转发请求。 在每个节点上,您需要配置 Keepalived 的配置文件,以实现 VRRP 协议和故障切换。在主节点上,您需要将 VRRP 的优先级设置为最高,以确保它成为主节点。在备份节点上,您需要将优先级设置为较低,以确保它只在主节点发生故障时接管虚拟 IP 地址。 4. 测试集群 在完成上述步骤后,您需要测试集群是否正常工作。您可以使用 curl 或浏览器访问虚拟 IP 地址,以确保请求能够正确地转发到后端服务器上。 以上就是基于 KeepalivedLVS 的高可用集群实现的大致步骤。需要注意的是,配置过程可能会因环境而异,您需要根据实际情况进行适当的调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值