Docker笔记三:基于LVS DR模式构建WEB服务集群

Posted 熊猫猛男

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Docker笔记三:基于LVS DR模式构建WEB服务集群相关的知识,希望对你有一定的参考价值。

安装ipvsadm

1. 先在宿主机上安装并以root来启动ipvsadm,每次要在容器中运行ipvs都需要先在宿主机上启动ipvs。如果直接进行2步操作将报出如下错误:

Can‘t initialize ipvs: Protocol not available
Are you sure that IP Virtual Server is built in the kernel or as module?

2. 实例化一个ipvs容器:

  • dockerfile:
    FROM ubuntu
    MAINTAINER cenze <[email protected]>
    
    RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
    ADD conf/sources.list /etc/apt/
    ADD conf/rc.ipvs /etc/ RUN apt-get update && apt-get install -y gcc make vim ipvsadm iproute2 #本机的80端口已经留给其他容器使用了,所以绑定在了89端口上 EXPOSE 89
  • 宿主机上运行容器ipvs:
    sudo docker run -it -p 89:89 --name lvs --privileged=true cenze/lvs
  • 容器ipvs中完成均衡策略配置:由于容器启动时不会自动去执行/etc/rc.local,所以需手动执行下。所有需要手动执行的命令都可写进rc.ipvs(需要可执行权限)文档:
    ip addr add 172.17.100.100 broadcast 172.17.100.100 label eth0:0 dev eth0
    ipvsadm -A -t 172.17.100.100:89 -s wlc
    ipvsadm -a -t 172.17.100.100:89 -r 172.17.0.8 -g -w 1
    ipvsadm -a -t 172.17.100.100:89 -r 172.17.0.6 -g -w 1
    然后一次手动执行完:
    [email protected]:/# /etc/rc.ipvs

 

配置Real Servers 

1. 与ipvs容器一样,需要手动执行一些配置命令,将其写进/etc/rc.rs(需要可执行权限):

ip addr add 172.17.100.100 broadcast 172.17.100.100 label lo:0 dev lo
echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce

然后一次手动执行完:

[email protected]:/usr/local/pkgs/nginx-1.10.2# /etc/rc.rs

2. 为RS-172.17.0.8和RS-172.17.0.6添加不同的index.html

<html>
<head>
<title>Welcome to RS-172.17.0.8!</title>
</head>
<body>
<h1>Welcome to RS-172.17.0.8!</h1>
</body>
</html>

3. WEB服务器的监听端口改为89。

 

测试集群负载均衡效果

从多个浏览器访问172.17.100.100:89:

1)不能从同一个浏览器开启多个标签去测试,否则将得到同一台WEB服务器的响应。

2)不能通过localhost:89去访问,否则将无法与WEB服务器群建立起连接。

 1. Chrome访问172.17.100.100:89: 

Welcome to 172.17.0.8!

2. FireFox访问172.17.100.100:89: 

Welcome to 172.17.0.6!



以上是关于Docker笔记三:基于LVS DR模式构建WEB服务集群的主要内容,如果未能解决你的问题,请参考以下文章

LVS+Keepalived+Nginx基于DR模式构建高可用方案

LVS_DR模式构建配置

LVS_DR模式构建配置

LVS负载均衡群集之构建DR模式,可跟做!!!

LVS-dr 构建配置(直接路由模式)

[Linux]--构建DR模式的LVS群集