Docker笔记三:基于LVS DR模式构建WEB服务集群
2017-12-18 18:09
936 查看
http://www.cnblogs.com/XiongMaoMengNan/p/8056211.html
安装ipvsadm1. 先在宿主机上安装并以root来启动ipvsadm,每次要在容器中运行ipvs都需要先在宿主机上启动ipvsadm。如果直接进行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 <272666745@qq.com> 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
宿主机上 build 镜像和 run 容器:
sudo docker build -t cenze/ipvs -f Dockerfile-IPVS . sudo docker run -it -p 89:89 --name ipvs --privileged=true cenze/ipvs
容器ipvs中完成均衡策略配置:由于容器启动时不会自动去执行/etc/rc.local,所以需手动执行下。所有需要手动执行的命令都可写进rc.ipvs(需要可执行权限)文档:
#!/bin/bash VIP=172.17.100.100 VPORT=89 RPORT=89 RS=("172.17.0.8" "172.17.0.6") RSW=("1" "1") TYPE=g addrs() { ipvsadm -a -t $VIP:$VPORT -r $1:$RPORT -$TYPE -w $2 [ $? -eq 0 ] && return 0 || return 1 } ip addr add $VIP broadcast $VIP label eth0:0 dev eth0 ipvsadm -A -t $VIP:$VPORT -s wlc COUNT=0 for I in ${RS[*]}; do addrs $I ${RSW[$COUNT]} let COUNT++ done
然后一次手动执行完,执行完后不能退出容器,窗口不能关闭;否则ipvsadm也将退出,上述配置信息将失效:
root@7a375abcd343:/# /etc/rc.ipvs
配置RS-172.17.0.6和RS-172.17.0.8
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
172.17.100.100被称为VIP,需要在Director(ipvs容器)和Real Server(RS-172.17.0.6和RS-172.17.0.8)上同时部署(也就是绑定到一张网卡上,新建一张虚拟网卡出来)。上述关于arp的设置不明白的,可去看这篇文章 Linux内核参数之arp_ignore和arp_announce。一次手动执行完:
root@203ffab2138f:/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(6)!</title> </head> <body> <h1>Welcome to RS-172.17.0.8(6)!</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服务集群
- 用 KVM 搭建web集群实验笔记 - LVS和Keeplived负载均衡(DR模式)
- HA集群之keepalived详解/基于keepalived+LVS-DR构建HA主备模型(一)
- lvs DR模式 +keepalived 实现directory 高可用、httpd服务负载均衡集群
- 基于keepalive+LVS的高可用集群来实现web服务负载均衡集群的架构
- 配置基于DR模式Lvs集群
- 基于lvs的DR模型搭建高可用的web服务,并部署wordpress,(附有脚本实现健康状态检测的代码) 推荐
- Keepalived+Lvs_DR模式实现Web服务的HA高可用集群
- 基于golang从头开始构建基于docker的微服务实战笔记
- Keepalived+lvs/DR 的 HA 集群、Keepalived实现web服务的HA集群
- lvs DR模式 +keepalived 实现directory 高可用、httpd服务负载均衡集群
- 使用LVS(Linux Virtual Server)在Linux上搭建负载均衡的集群服务(DR模式
- Docker笔记一:基于Docker容器构建并运行 nginx + php + mysql ( mariadb ) 服务环境
- 构建基于LVS-NAT模型的WEB集群
- 配置基于DR模式Lvs集群
- 基于docker+etcd+confd + haproxy构建高可用、自发现的web服务(转载)
- Docker笔记一:基于Docker容器构建并运行 nginx + php + mysql ( mariadb ) 服务环境
- 基于LVS-DR的WEB服务的负载均衡实现
- 实例详解LB基于LVS架构之NAT、DR模型架构实现web服务负载均衡
- 【Docker】基于docker+etcd+confd + haproxy构建高可用、自发现的web服务