准备两台虚拟机:Client/Server

  • 环境:
    Distributor ID: CentOS
    Description: CentOS Linux release 7.7.1908 (Core)
    Release: 7.7.1908
    Codename: Core

实现LVS的负载均衡

  • Client作为客户端,Server作为服务端
  • 在Server端运行安装LVS用于调度
  • 在Server端运行两个nginx镜像提供web服务

具体实现

systemctl start docker
docker pull nginx:1.17-alpine
  • 部署两个nginx容器作为web服务:web1、web2
docker run --name web1 -d nginx:1.17-alpine
docker exec -it web1 /bin/sh
echo '<h1>web1<h1>' > /usr/share/nginx/html/index.html

docker run --name web2 -d nginx:1.17-alpine
docker exec -it web2 /bin/sh
echo '<h1>web2<h1>' > /usr/share/nginx/html/index.html
  • 查看Server端和容器的ip地址
    Server端:直接运行ifconfig
    容器:用docker exec进入容器的情况下运行ifconfig

  • 安装ipvsadm
yum -y install ipvsadm
  • 添加调度规则
ipvsadm -A -t Server端ip地址:80 -s rr
ipvsadm -a -t Server端ip地址:80 -r 容器ip地址:80 -m
  • Client端访问Server
curl Server端ip地址

实验结果

遇到问题

  • Client端无法访问Server端的web服务,但可以ping通
  • 解决:开放Server端的80端口
iptables -I INPUT -p tcp --dport 80 -j ACCEPT
01-24 19:02