摘要:本文主要向大家介绍了Linux运维知识之基于consul实现nginx的动态upstream,通过具体的内容向大家展现,希望对大家学习Linux运维知识有所帮助。
本文主要向大家介绍了Linux运维知识之基于consul实现nginx的动态upstream,通过具体的内容向大家展现,希望对大家学习Linux运维知识有所帮助。
consul下载地址 https://releases.hashicorp.com/consul/1.0.6/consul_1.0.6_linux_amd64.zip
nginx-upsync-module下载地址 https://github.com/weibocom/nginx-upsync-module/archive/nginx-upsync-1.8.x.zip
nginx下载地址 //nginx.org/download/nginx-1.8.0.tar.gz
# 解压包 unzip consul_1.0.6_linux_amd64.zip # 移动consul到格式位置 mv consul /root/services/account_consul/ # 启动consul /root/services/account_consul/consul agent -server -bootstrap-expect=1 -data-dir=/root/data/consul/ -node=accounting01 -bind=172.31.132.207 -config-dir=/root/data/consul_config/ -client 0.0.0.0 -ui # 添加upstreams配置 curl -X PUT //172.31.132.207:8500/v1/kv/upstreams/accounting/127.0.0.1:8000 curl -X PUT //172.31.132.207:8500/v1/kv/upstreams/accounting/127.0.0.1:8001
访问//ip:8500/ui/
上图我们可以看出,我们已经通过http请求存储了upstreams配置信息, 接下来我们需要让Nginx从consul自动更新upstreams配置;
# 解压 tar -zxvf nginx-1.8.0.tar.gz unzip nginx-upsync-1.8.x.zip # 编译安装 cd nginx-1.8.0 ./configure --prefix=/usr/local/nginx --with-pcre --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --with-http_realip_module --with-http_sub_module --add-module=/root/packages/nginx-upsync-module-nginx-upsync-1.8.x make && make install # 检查Nginx是否按照成功 /usr/local/nginx/sbin/nginx
vim /usr/local/nginx/conf/nginx.conf # 修改用户 (PS:由于我是root环境启动的服务, 若Nginx的用户不是root的话, 某些文件无法访问, 例如: 静态文件) user root; # 添加额外配置文件路径 (PS: 非必须, 但是我习惯这么做) http { ... include /usr/local/nginx/conf/sites-enabled/*; server { .... } }
# 添加Nginx的upstream配置 (accouting_server) ➜ conf cd sites-enabled (accouting_server) ➜ sites-enabled pwd /usr/local/nginx/conf/sites-enabled (accouting_server) ➜ sites-enabled lltotal 8.0K -rw-r--r-- 1 root root 915 Feb 24 18:13 accounting -rw-r--r-- 1 root root 213 Feb 24 18:13 consul (accouting_server) ➜ sites-enabled cat accounting upstream accounting { server 127.0.0.1:11111; upsync 172.31.132.207:8500/v1/kv/upstreams/accounting/ upsync_timeout=6m upsync_interval=500ms upsync_type=consul strong_dependency=off; upsync_dump_path /usr/local/nginx/conf/servers/accounting.conf; } server { listen 80; #server_name accounting.willdx.me; server_name 47.104.93.126 charset utf-8; client_max_body_size 20M; access_log /var/log/nginx/accounting/access.log; error_log /var/log/nginx/accounting/error.log; location /media { alias /root/mycode/accouting_server/accouting_project/media; } location /static { alias /root/mycode/accouting_server/accouting_project/static; } location / { #proxy_set_header Host $host; #proxy_pass //localhost:8888/; #proxy_redirect //0.0.0.0:8888/ /; proxy_pass //accounting; } }
# 启动测试服务python -m http.server 8000 python -m http.server 8001
测试1: 负载均衡
# 测试 for i in `seq 10000`; do curl //47.104.93.126/; sleep 1; done; # 发现请求是负载均衡的
测试2: 测试动态的更改数据之后Nginx请求
# 删除一个配置 curl -X DELETE //172.31.132.207:8500/v1/kv/upstreams/accounting/127.0.0.1:8000 true# # 再次测试2.2.3步骤 发现请求不走127.0.0.1:8000了 # 开启8000 curl -X PUT //172.31.132.207:8500/v1/kv/upstreams/accounting/127.0.0.1:8000 # 再次测试2.2.3步骤 发现请求又走127.0.0.1:8000了
我们可以consul来进行集中的配置管理, 服务变更的时候, 我们只需要更改配置即可;
本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注系统运维Linux频道!您输入的评论内容中包含违禁敏感词
我知道了
请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号