yum安装 LVS(DR)+keepalived+netty4 实现websocket(网页群聊) 高可用解决方案(一)

 由于本人一直在做netty通信方面的工作,对于近期一直比较流行的websocket技术也比较关注。 netty4对websocket协议也提供了编码解码。大大解决了websocket服务器的开发难度。 简单介绍一下websocket : websocket是比http协议更加轻量级的协议,没有过多的冗余。  此协议是在浏览器端与服务器端建立tcp长连接,能保持数据的实时交互。传统的浏览器采用http方式,只能通过ajax轮询方式来与服务器通信,这样数据就达不到实时的要求。  具体请读者google websocket方面的知识

由于使用了tcp长连接的方式,在高用户量以及复杂的业务压力下,单台机器容易产生内存不够的现象。所以这第一张我来解决LVS(DR)+keepalived做tcp转发负载。

本文使用的是UDP方式,TCP修改配置文件即可。 本片文章例子经测试也可对tomcat做负载。  本章尚未加入netty,websocket的实现,在下一章可做出

1环境介绍

(1)    2台lvs主备负载均衡

LVS1: 192.168.145.136
LVS2: 192.168.145.137

   (2) 群集节点(RIP tomcat等应用服务器)

      RealServer1:    192.168.145.128    

RealServer2:  192.168.145.135

(3)VIP 虚拟IP

      192.168.145.189

 

2 在LVS1与LVS2中,安装ipvsadm

yum install ipvsadm

3在LVS1与LVS2中安装keepalived

yum install keepalived

4在LVS1与LVS2服务器上添加虚拟IP

   ip addr add 192.168.145.189/24 dev eth0

ip addr add 192.168.145.189/24 dev eth0

5在LVS1与LVS2中关闭iptables。也可根据keepalived的端口放行相应的端口

   service iptables stop

6 关闭 selinux

   vi /etc/selinux/config

   SELINUX=disabled

7配置keepalive文件(Master :lvs1)

vim /etc/keepalived/keepalived.conf

global_defs{                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 

   notification_email {

     [email protected]

   }

   [email protected]

   smtp_server 192.168.200.1

   smtp_connect_timeout 30

   router_id LVS_01

}

 

vrrp_instanceVI_1 {

    state MASTER

    interface eth0

    virtual_router_id 51

    priority 200

    advert_int 1

    authentication {

        auth_type PASS

        auth_pass 1111

    }

    virtual_ipaddress {

        192.168.145.189/24

    }

}

实际参数可根据实际情况进行修改

 

8配置Backup:LVS2 配置文件

vim /etc/keepalived/keepalived.conf

global_defs{

   notification_email {

     [email protected]

   }

   [email protected]

   smtp_server 192.168.200.1

   smtp_connect_timeout 30

   router_id LVS_02

}

 

vrrp_instanceVI_1 {

    state BACKUP

    interface eth0

    virtual_router_id 51

    priority 150

    advert_int 1

    authentication {

        auth_type PASS

        auth_pass 1111

    }

    virtual_ipaddress {

        192.168.145.189/24

    }

}

Master 与Backup的配置文件区别在于。State 参数  priority 参数 router_id参数。 详细请可参考百度解释

 

9 开启LVS1 与LVS2 中的keepalived

service keepalived start

 

10 配置visual server

vim /etc/keepalived/keepalived.conf

virtual_server192.168.145.189 3478 {

    delay_loop 2

    lb_algo wrr

    lb_kind DR

    persistence_timeout 10

    protocol UDP

 

    real_server 192.168.145.128 3478 {

        weight 1

        TCP_CHECK {

            connect_timeout 10

            nb_get_retry 3

            delay_before_retry 3

        }

    }

    real_server 192.168.145.135 3478 {

        weight 1

    TCP_CHECK {

            connect_timeout 10

            nb_get_retry 3

            delay_before_retry 3

        }

    }

}

将上面的配置copy到LVS1和LVS2中两台设备里

 

最终配置如下图:

LVS1:

yum安装 LVS(DR)+keepalived+netty4 实现websocket(网页群聊) 高可用解决方案(一)_第1张图片

 

Lvs2:

 yum安装 LVS(DR)+keepalived+netty4 实现websocket(网页群聊) 高可用解决方案(一)_第2张图片

 

测试程序:

在本地写一个UDP发送程序。发送IP为192.168.145.189. 发送端口为: 3478
RealServer1  Realserver2 中分别运行
yum install tcpdump
tcpdump udp port 3478
 
看两台realserver 是否能同时接收到数据

你可能感兴趣的:(java,网络编程,netty,LVS,keepalive)