菜单 学习猿地 - LMONKEY

VIP

开通学习猿地VIP

尊享10项VIP特权 持续新增

知识通关挑战

打卡带练!告别无效练习

接私单赚外块

VIP优先接,累计金额超百万

学习猿地私房课免费学

大厂实战课仅对VIP开放

你的一对一导师

每月可免费咨询大牛30次

领取更多软件工程师实用特权

入驻
2669
2

Ubuntu18 上使用 docker 的 nginx 容器模拟负载均衡

原创
05/13 14:22
阅读数 3487

安装Docker

创建sh文件,也可以一条一条复制运行 vim install-docker.sh

sudo apt-get install apt-transport-https ca-certificates curl software-properties-common

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
sudo apt-get update
sudo apt-get install docker-ce

sudo systemctl enable docker
sudo systemctl start docker

运行安装
file
查看docker
file
换成国内源
vim /etc/docker/daemon.json 没有则新建此文件

{
    "registry-mirrors": [
        "https://registry.docker-cn.com"
    ]
}

保存,然后重启docker server
service docker restart

拉取nginx镜像&运行容器实例

  1. 获取nginx镜像 docker pull nginx
  2. 然后使用 docker images可以查看获取的镜像
  3. 在本地创建docker/nginx1/index.html文件和docker/nginx2/index.html文件,用于挂载项目文件
  4. 在index.html文件输入内容 "hello,this is nginx1." 和 "hello,this is nginx2".
  5. 创建运行nginx容器
    file
    1.模拟转发请求的nginx
    docker run  -d --name nginx -p 8081:80 nginx
    2.模拟第一台服务器的nginx
    docker run  -d --name nginx1 -p 8082:80 -v /root/docker/nginx1:/usr/share/nginx/html nginx
    3.模拟第二台服务器的nginx
    docker run  -d --name nginx2 -p 8083:80 -v /root/docker/nginx2:/usr/share/nginx/html nginx

-d:守护进程,在后台运行
-v:挂载文件,挂载刚刚创建的docker/nginx1目录
-p:表示本地映射容器内的端口 (本地8081映射容器内的80)
--name :取名称

在浏览器输入127.0.0.1:8081、127.0.0.1:8082、127.0.0.1:8083可以访问容器内的index.html
file
filefile
查看容器状态
docker ps -a
file
进入容器nginx,安装vim
docker exec -it nginx /bin/bash
sudo apt-get update
sudo apt-gei install vim
file
到这里环境就装完了,接下来是nginx的配置.

修改nginx的配置

  1. 编辑vim /etc/nginx/nginx.conf 文件,注意这里的ip是宿主机的ip

    upstream webapp { 
      server 192.168.1.187:8082; 
      server 192.168.1.187:8083; 
    }

    file

  2. 编辑vim /etc/nginx/conf.d/default.conf文件,在location / {}引入刚刚写的webapp.

    proxy_pass http://webapp;

    file

  3. 重启nginx service nginx restart

测试

file

upstream依照轮询(默认)方式进行负载,每一个请求按时间顺序逐一分配到不同的后端服务器。假设后端服务器down掉。能自己主动剔除。尽管这样的方式简便、成本低廉。但可靠性低和负载分配不均衡。

upstream有很多分配策略:如weight、ip_hash等。

发表评论

0/200
2669 点赞
2 评论
收藏
为你推荐 换一批