多主多从集群式服务VIP随机轮询调度的解决方案

  1. 项目背景

服务集群为二主四从集群模式,现实现一个域名(对应一个公网ip)访问服务器集群同时实现负载均衡和容灾处理。

  1. 解决方案
    1. Keepalived集群模式
      1. Keepalived技术介绍

Keepalived的作用是检测服务器的状态,如果有一台web服务器宕机,或工作出现故障,Keepalived将检测到,并将有故障的服务器从系统中剔除,同时使用其他服务器代替该服务器的工作,当服务器工作正常后Keepalived自动将服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的服务器。

通俗来讲:两台业务系统启动着相同的服务,如果有一台故障,另一台自动接管,我们将将这个称之为高可用。

      1. 技术框架图

Keekpalived工作原理:通过vrrp协议实现

        1. 单主单VIP模式集群方案:

服务之间主节点服务由选举机制产生:

网络配置集群架构:

  1. 方案实现
    1. Keepalived系统搭建
      1. 系统环境

主机系统:

Ubuntu

主机设备:

server1:192.168.2.188

server2:192.168.2.71

VIP地址:

192.168.2.189

      1. Keepalived安装

在线安装:

>apt-get install keepalived

配置规则:

>mkdir -p /etc/keepalived/

>vi /etc/keepalived/keepalived.conf

添加如下内容:

vrrp_instance VI_1 {

#主机设置master
state MASTER
#监听网卡设置

interface eth0

#虚拟路由ID 保持主从配置相同
virtual_router_id 51
#权重主的大于从的

priority 100

advert_int 1

authentication

{

auth_type PASS

auth_pass 1111

 }
#虚拟IP设置

virtual_ipaddress

 {

10.10.6.188

 }

}

注:

Interface  为当前设备ip网卡名称,可通过ifconfig命令查询

priority  权重配置 数值越大权重越大,一般主服务器设置大一些

state  master 为主服务器;BACKUP 为从服务器;

服务启动重启查看:

>service keepalived start

查看启动状态

>service keepalived status

或者

>ps -ef|grep keepalived

停止

>service keepalived stop

服务重启

>service keepalived restart

      1. 查看VIP是否配置成功

>ip addr list

或者

>ip addr show eth0

查看网卡是否绑定VIP

      1. Nginx安装配置

在线安装nginx

>apt-get install nginx

找到nginx文件和nginx.conf文件位置

>find / -name nginx

>fing / -name nginx.conf

进入目录修改nginx配置,监听一个端口,用来接口调用测试

一般查询到nginx启动目录为:

/usr/sbin/nginx

配置文件目录为:

/etc/nginx/nginx.conf

编辑配置文件:

两台设备配置一样,添加如下代理配置:

server {                listen 81;              server_name localhost           index index.html index.htm index.php;           root /xiaoxiao/na/index/;    }

创建index.html文件

>mkdir -p  /xiaoxiao/na/index/

>chmod -R 777  /xiaoxiao/na/index/


>vi  /xiaoxiao/na/index/index.html

添加如下内容并保存:

其中server1为:

<!DOCTYPE html>

<html>

        <head>

                <meta charset="UTF-8">

                <title></title>

        </head>

        <body>

                <h1>this is server 1</h1>

        </body>

</html>

其中server2为:

<!DOCTYPE html>

<html>

        <head>

                <meta charset="UTF-8">

                <title></title>

        </head>

        <body>

                <h1>this is server 2</h1>

        </body>

</html>

启动nginx

> /usr/sbin/nginx

查看nginx是否启动

>ps -ef |grep nginx

      1. 效果测试

重复测试如下接口查看返回信息

> curl  http://192.168.2.189:81/index.html

Curl命令测试:

[root@test-centos-121 ~]# curl http://192.168.2.192:81/index.html

<!DOCTYPE html>

<html>

        <head>

                <meta charset="UTF-8">

                <title></title>

        </head>

        <body>

           <h1>this is server2 </h1>

        </body>

</html>

[root@test-centos-121 ~]#

注:返回的server2的信息

查看VIP绑定的设备:

>ip addr list

如下:

root@ubuntu-wys-SIP:/etc/keepalived# ip addr list

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

    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

    inet6 ::1/128 scope host

       valid_lft forever preferred_lft forever

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

    link/ether 00:0c:29:a4:19:c3 brd ff:ff:ff:ff:ff:ff

    inet 192.168.2.71/24 brd 192.168.2.255 scope global eth0

       valid_lft forever preferred_lft forever

    inet 192.168.2.192/32 scope global eth0

       valid_lft forever preferred_lft forever

    inet6 fe80::20c:29ff:fea4:19c3/64 scope link tentative dadfailed

       valid_lft forever preferred_lft forever

root@ubuntu-wys-SIP:/etc/keepalived#

宕机测试:

关闭主节点(关机处理),这边关闭keepalived处理

>service keepalived  stop

查看发现VIP已经和server2解绑:

> ip addr list

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

    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

    inet6 ::1/128 scope host

       valid_lft forever preferred_lft forever

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

    link/ether 00:0c:29:a4:19:c3 brd ff:ff:ff:ff:ff:ff

    inet 192.168.2.71/24 brd 192.168.2.255 scope global eth0

       valid_lft forever preferred_lft forever

    inet6 fe80::20c:29ff:fea4:19c3/64 scope link tentative dadfailed

       valid_lft forever preferred_lft forever

root@ubuntu-wys-SIP:/etc/keepalived# 

再次重复测试如下接口查看返回信息

> curl  http://192.168.2.189:81/index.html

返回结果为:

[root@test-centos-121 ~]# curl http://192.168.2.192:81/index.html

<!DOCTYPE html>

<html>

        <head>

                <meta charset="UTF-8">

                <title></title>

        </head>

        <body>

                <h1>this is server1 </h1>

        </body>

</html>

[root@test-centos-121 ~]#

注:返回的server1的信息,可见服务器已成功轮换到备用服务器

    1. LVS系统搭建
      1. 系统环境

主机系统:

Ubuntu

主机设备:

server1:192.168.2.188

server2:192.168.2.71

Server-vip: 192.168.2.145

VIP地址:

192.168.2.191

      1. ipvsadm安装

linux已经集成ipvsadm,特殊没有当前命令可采用如下在线安装方法:

Ubuntu :>apt-get install ipvsadm

Centos: >yum -y  install ipvsadm

      1. ipvsadm和实际设备VIP配置

        1. 虚拟服务器配置ipvsadm

配置VIP

>ipvsadm -A -t 192.168.2.191:81 -s rr

配置VIP绑定的漂浮的两台服务器设备

>ipvsadm -a -t 192.168.2.191:81 -r 192.168.2.71:81 -g

>ipvsadm -a -t 192.168.2.191:81 -r 192.168.2.71:81 -g

查看配置情况:

>ipvsadm  -l

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn

TCP  xiaoxiaocentos:81 rr

  -> 192.168.2.71:81              Route   1      0          0         

  -> 192.168.2.188:81             Route   1      0          0         

[root@xiaoxiaocentos ~]# 

报错ipvsadm 配置:

Ubuntu命令

>/etc/init.d/ipvsadm save

centos命令

>/usr/sbin/ipvsadm -S

        1. 实际服务器配置VIP

两台实际服务器设备分别执行相同命令

>ip addr add 192.168.2.191/24 dev eth0

查看配置结果:

>ip addr show  eth0

如下:

root@ubuntu-wys-PDD-v2:/etc/keepalived# ip addr show  eth0

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

    link/ether 00:0c:29:1a:4a:91 brd ff:ff:ff:ff:ff:ff

    inet 192.168.2.188/24 brd 192.168.2.255 scope global eth0

       valid_lft forever preferred_lft forever

    inet 192.168.2.192/32 scope global eth0

       valid_lft forever preferred_lft forever

    inet 192.168.2.191/24 scope global secondary eth0

       valid_lft forever preferred_lft forever

    inet6 fe80::20c:29ff:fe1a:4a91/64 scope link tentative dadfailed

       valid_lft forever preferred_lft forever

root@ubuntu-wys-PDD-v2:/etc/keepalived#

      1. Nginx安装配置

安装配置步骤如上3.1.4步骤

      1. 效果测试

通过接口调用:

curl http://192.168.2.191:81/index.html

结果如下:

[root@test-centos-121 ~]# curl http://192.168.2.191:81/index.html

<!DOCTYPE html>

<html>

        <head>

                <meta charset="UTF-8">

                <title></title>

        </head>

        <body>

                <h1>this is server1 </h1>

        </body>

</html>

[root@test-centos-121 ~]# curl http://192.168.2.191:81/index.html

<!DOCTYPE html>

<html>

        <head>

                <meta charset="UTF-8">

                <title></title>

        </head>

        <body>

           <h1>this is server2 </h1>

        </body>

</html>

[root@test-centos-121 ~]# curl http://192.168.2.191:81/index.html

<!DOCTYPE html>

<html>

        <head>

                <meta charset="UTF-8">

                <title></title>

        </head>

        <body>

                <h1>this is server1 </h1>

        </body>

</html>

[root@test-centos-121 ~]# curl http://192.168.2.191:81/index.html

<!DOCTYPE html>

<html>

        <head>

                <meta charset="UTF-8">

                <title></title>

        </head>

        <body>

           <h1>this is server2 </h1>

        </body>

</html>

[root@test-centos-121 ~]#

通过对比返回结果看到,实现了如上通过VIP访问接口随机轮询调用两台实际设备

  1. 方案对比

Keepalived方案:

当一个VIP模式下只能实现容灾处理,两天服务器应用选举机制,keepalived启动后只有一个设备ip启用,只要当一台设备宕机后另外一台设备才起作用。(其中VIP实现机制的选择)

Lvs方案:

需要一台调度设备,调度设备通过VIP实现随机实现随机轮询机制。

可以通过一个公网ip(调度设备的外网ip),内部通过ipvsadm+VIP调度,实现轮询访问两个主节点。试下负载均衡和设备容灾。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值