您的位置:首页 > 运维架构 > Nginx

宝宝忘记reload nginx了之部署

2017-04-21 10:30 204 查看

架构拓扑

主机名IP角色
nginx-lb10.0.1.5负载均衡
node00110.0.1.6web服务器
node00210.0.1.7web服务器
说明:
nginx-lb安装nginx和consul服务,作为负载均衡。node001和node002安装nginx作为后端web服务器

系统环境

# uname -rm
3.10.0-229.el7.x86_64 x86_64
# cat /etc/redhat-release
CentOS Linux release 7.1.1503 (Core)

创建目录

# mkdir /app
# mkdir /soft

nginx-lb上部署服务

安装依赖

# yum install -y pcre pcre-devel openssl openssl-devel

创建用户和用户组

# groupadd nginx
# useradd -g nginx -M -s /sbin/nologin nginx

下载相关包

# cd /soft/
# git clone https://github.com/weibocom/nginx-upsync-module.git # wget https://codeload.github.com/xiaokai-wang/nginx_upstream_check_module/zip/master # unzip master
# wget http://nginx.org/download/nginx-1.10.1.tar.gz # wget https://releases.hashicorp.com/consul/0.8.1/consul_0.8.1_linux_amd64.zip

安装nginx

# cd /soft/
# tar xf nginx-1.10.0.tar.gz
# cd nginx-1.10.1
# patch -p0 < /soft/nginx_upstream_check_module-master/check_1.9.2+.patch
# ./configure --prefix=/app/nginx-1.10.1 --user=nginx --group=nginx --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module --with-pcre --add-module=/soft/nginx-upsync-module/ --add-module=/soft/nginx_upstream_check_module-master/
# make
# make install
# ln -s /app/nginx-1.10.1/ /app/nginx
# cd

启动consul

# cd /soft/
# unzip consul_0.8.1_linux_amd64.zip
# mkdir /app/consul/{conf,bin,,data} -p
# cp consul /app/consul/bin/
# cd /app/consul/bin/
# ./consul agent -server -bootstrap-expect=1 -node=nginx-lb -bind=10.0.1.5 -client 0.0.0.0 -ui

配置nginx

# cd /app/nginx-1.10.1/conf/
# cp nginx.conf nginx.conf.ori
# vim nginx.conf
worker_processes  1;

events {
worker_connections  1024;
}

http {
include       mime.types;
default_type  application/octet-stream;

log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"'
'$upstream_addr $upstream_status $upstream_response_time $request_time';

access_log  logs/access.log  main;
sendfile        on;
keepalive_timeout  65;
upstream test {
server 127.0.0.1:11111;
upsync 10.0.1.5:8500/v1/kv/upstreams/test upsync_timeout=6m upsync_interval=500ms upsync_type=consul strong_dependency=off;
upsync_dump_path /app/nginx/conf/servers/servers.conf;
}

upstream bar {
server 10.0.1.6:8080 weight=1 fail_timeout=10 max_fails=3;
}

server {
listen 80;

location = / {
proxy_pass http://test; proxy_set_header  Host  $host;
proxy_set_header  X-Real-IP  $remote_addr;
proxy_set_header  X-Forwarded-For  $proxy_add_x_forwarded_for;
add_header    real $upstream_addr;
}

location ~ /Content|Scripts/ {
proxy_pass http://test; proxy_set_header  Host  $host;
proxy_set_header  X-Real-IP  $remote_addr;
proxy_set_header  X-Forwarded-For  $proxy_add_x_forwarded_for;
}

location = /bar {
proxy_pass http://bar; }

location = /upstream_show {
upstream_show;
}

location = /upstream_status {
stub_status on;
access_log off;
}
}
}

创建备份目录

# mkdir server
# cd

启动nginx

# /app/nginx/sbin/nginx

查看consul页面



部署后端服务

部署简单的nginx服务很简单,这里就不用大量篇幅进行阐述了。




添加后端服务

# curl -X PUT http://10.0.1.5:8500/v1/kv/upstreams/test/10.0.1.6:8080 true
# curl -X PUT http://10.0.1.5:8500/v1/kv/upstreams/test/10.0.1.7:8080 true
# cat /app/nginx/conf/servers/servers.conf
server 10.0.1.6:8080 weight=1 max_fails=2 fail_timeout=10s;
server 10.0.1.7:8080 weight=1 max_fails=2 fail_timeout=10s;

查看consul页面



调整权重

# curl -X PUT -d "{\"weight\":2, \"max_fails\":2, \"fail_timeout\":10}" http://10.0.1.5:8500/v1/kv/upstreams/test/10.0.1.6:8080 true
# cat /app/nginx/conf/servers/servers.conf
server 10.0.1.6:8080 weight=2 max_fails=2 fail_timeout=10s;
server 10.0.1.7:8080 weight=1 max_fails=2 fail_timeout=10s;


将后端某台服务下线

# curl -X PUT -d "{\"weight\":2, \"max_fails\":2, \"fail_timeout\":10, \"down\":1}" http://10.0.1.5:8500/v1/kv/upstreams/test/10.0.1.6:8080 true
# cat /app/nginx/conf/servers/servers.conf
server 10.0.1.6:8080 weight=2 max_fails=2 fail_timeout=10s down;
server 10.0.1.7:8080 weight=1 max_fails=2 fail_timeout=10s;


删除某台后端服务

# curl -X DELETE http://10.0.1.5:8500/v1/kv/upstreams/test/10.0.1.6:8080 true
# cat /app/nginx/conf/servers/servers.conf
server 10.0.1.7:8080 weight=1 max_fails=2 fail_timeout=10s;


更多精彩请关注DevOpsView


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  负载均衡 nginx upsync