LVS 三种模式 简介
lvs 就是一个调度器,用户发送请求
流程 CIP <-->(外网IP)VIP == DIP(内网IP) <--> RIP(真正IP)
lvs-nat: 修改请求报文的目标IP,多目标IP的DNAT (原路来,原路返回)多目标,多端口
将原始数据包封装并添加新的包头(内容包括新的源地址及端口、目标地址及端口),从而实现将一个目标为调度器的VIP地址的数据包封装,通过隧道转发给后端的真实服务器
LVS(TUN)模式要求真实服务器可以直接与外部网络连接,真实服务器在收到请求数据包后直接给客户端主机响应数据。
lvs-dr: 操纵封装新的MAC地址
直接路由模式(DR模式)要求调度器与后端服务器必须在同一个局域网内,VIP地址需要在调度器与后端所有的服务器间共享,
因为最终的真实服务器给客户端回应数据包时需要设置源IP为VIP地址,目标IP为客户端IP,这样客户端访问的是调度器的VIP地址,
回应的源地址也依然是该VIP地址(真实服务器上的VIP),客户端是感觉不到后端服务器存在的
LVS 算法简介
http://zh.linuxvirtualserver.org/node/2903
安装docker
https://www.cnblogs.com/xiufengchen/p/10387055.html
准备三台Linux7容器 搭建nat 模式
获取镜像
docker pull centos:7
创建第一台容器
docker run --privileged=true -dit -p 8081:8080 --name app1 centos:7 /usr/sbin/init
创建第二台容器
docker run --privileged=true -dit -p 8082:8080 --name app2 centos:7 /usr/sbin/init
在创建第三个容器
docker run --privileged=true -dit --name master centos:7 /usr/sbin/init
-p 映射宿主机端口
部署第一台容器
docker exec -it app1 /bin/bash
安装工具
yum -y install net-tools vi wget
安装ipvsadm
yum -y install ipvsadm
下载新的CentOS-Base.repo 到/etc/yum.repos.d/ #centos 7
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
更新yum缓存
yum makecache
下载nginx 依赖
yum install epel-release -y
下载nginx
yum install nginx -y
systemctl start nginx
systemctl enable nginx
配置nginx.conf
find / -name 'nginx.conf'
vi /etc/nginx/nginx.conf
把这一段内容对应的修改 用户,端口,路径
修改前
---------------------------------------------------------------------------
user nginx; 修改用户,不修改启动nginx 报403错误,因为不是用一个用户
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
root /usr/share/nginx/html;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
location / {
}
------------------------------------------------------------------------
修改后
user root;
server {
listen 8080;
server_name localhost;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
location / {
root /root/html;
index index.html;
}
-----------------------------------------------------------------------
cd
mkdir html
cd html/
vi index.html
service1 1234567 ;
systemctl restart nginx
访问宿主机 ip :8081
成功显示页面
service1 1234567 ;
第一台容器搭建完成
开始搭建第二台容器 与 第一台容器相同
vi index.html
service2 7654321;
分别进入到这两个容器中,输入ifconfig 命令,查看他们的ip地址
docker exec -it app1 /bin/bash
设置为 RS1: 172.17.0.2
docker exec -it app2 /bin/bash
设置为 RS1: 172.17.0.3
在第三台容器上配置
docker exec -it master /bin/bash
yum -y install net-tools vi wget
yum -y install ipvsadm
ifconfig
docker 容器 ip 172.17.0.4
设置为 VIP: 172.17.0.4
ipvsadm -C
ipvsadm -A -t 172.17.0.4:80 -s wrr
ipvsadm -a -t 172.17.0.4:80 -r 121.36.104.222:8082 -m -w 1
ipvsadm -a -t 172.17.0.4:80 -r 121.36.104.222:8081 -m -w 1
注释
ipvsadm -A -t VIP:80 -s wrr
ipvsadm -a -t VIP:80 -r 宿主机IP:8081 -m -w 1
测试
curl 172.17.0.4:80
Nat 模式搭建完成