docker 搭建LVS NAT模式 安装 nginx

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 搭建LVS NAT模式 安装 nginx_第1张图片

 

部署第一台容器

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;

        }

-----------------------------------------------------------------------

docker 搭建LVS NAT模式 安装 nginx_第2张图片

 

cd

 

mkdir html

 

cd html/

 

vi index.html

service1  1234567 ;

 

systemctl restart nginx

 

访问宿主机 ip :8081

 

成功显示页面

service1  1234567 ;

 

docker 搭建LVS NAT模式 安装 nginx_第3张图片

 

第一台容器搭建完成

 

开始搭建第二台容器 与 第一台容器相同

 

vi index.html

service2  7654321;

docker 搭建LVS NAT模式 安装 nginx_第4张图片

 

分别进入到这两个容器中,输入ifconfig 命令,查看他们的ip地址

docker exec -it app1 /bin/bash

 

设置为 RS1: 172.17.0.2

docker 搭建LVS NAT模式 安装 nginx_第5张图片

 

docker exec -it app2 /bin/bash

 

设置为 RS1: 172.17.0.3

 

docker 搭建LVS NAT模式 安装 nginx_第6张图片

 

 

在第三台容器上配置

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

 

docker 搭建LVS NAT模式 安装 nginx_第7张图片

 

测试

curl 172.17.0.4:80

docker 搭建LVS NAT模式 安装 nginx_第8张图片

Nat 模式搭建完成

 

 

 

 

 

你可能感兴趣的:(docker,LVS)