准备两台虚拟机: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