起因
最近阿里的费用消耗过高,所以打算从阿里迁移到有一定的优惠的azure china上,其实我本人是抗拒的
一,azure 的生态还不够完善,比如类似阿里的容器系统,一键部署的服务都得自己用k8s,或者swarm进行控制统一部署
二,部署时会有和种安全性的配置,还需要去里面自己管理平台进行设置
其它的就没什么特别的问题了,和正常的ubuntu使用没有太大的区别
准备
- docker
- docker-compose
- nginx镜像
安装docker ,使用python pip 安装docker-compose ,装备nginx 镜像
场景
- 有一台主机器 A
- 若干从机B,C,D,E,F
- 开放主机3001 的http端口,转发到从机的,3301这样可以实现负载均衡,统一一个入口点,当然,负载的策略可以根据自己的需要来,具体可以查查nginx weight 的关键字
使用
准备我们的nginx 的应用配置文件 appfirst.conf
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
upstream appfirst { server 10.0.0.4:3301; server 10.0.0.5:3301; server 10.0.0.7:3301; server 10.0.0.8:3301; server 10.0.0.9:3301; } server { listen 3301; # The host name to respond to server_name appfirst; location / { proxy_pass http://appfirst; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header Host $host; proxy_set_header X-Real-Port $server_port; proxy_set_header X-Real-Scheme $scheme; } } |
在upsteam里面,填入的就是我们实际的B,C,D,E,F appfirst 应用内网地址,如果你有多个应用需要转发,可以类似的编写appsecond.conf …等等
在同目录下编写docker-compose.yml
文件,内容如下
1 2 3 4 5 6 7 8 9 10 11 |
proxy: image: nginx ports: - "3301:3301" #- "3302:3303" #- "3303:3303" volumes: - "./appfirst.conf:/etc/nginx/conf.d/appfirst.conf" #- "./appsecond.conf:/etc/nginx/conf.d/appsecond.conf" #- "./appthird.conf:/etc/nginx/conf.d/appthird.conf" |
Ok ,准备工作都做完了,将docker-compose.yml,appfirst.conf等放在同一个目录 ,使用如下命令
1 2 |
sudo docker-compose up -d |
将接下来就可以看到使用docker-compose 的nginx的负载均衡就完成了