宝宝忘记reload nginx了之部署

架构拓扑

主机名 IP 角色
nginx-lb 10.0.1.5 负载均衡
node001 10.0.1.6 web服务器
node002 10.0.1.7 web服务器

说明:
        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

时间: 2024-10-08 03:18:27

宝宝忘记reload nginx了之部署的相关文章

宝宝忘记reload nginx了

介绍 nginx-upsync-module是由王晓开用C开发的nginx模块,用于从consul或其它同步upstream模块配置,动态修改后端服务属性(weight.max_fails等等).修改这些信息后,不像未使用该模块的nginx一样需要reload下nginx.        nginx在作为负载均衡角色时,对于单台nginx,增加.删除后端服务,对于进行单台的nginx,修改nginx配置文件后,要想配置文件生效,必须reload下nginx,这是很方便的.但是对于一个十几台或者几

web服务器配置及nginx和mysql部署

nginx 编译安装方法: mkdir -p /home/oldboy/tools cd /home/oldboy/tools wget http://nginx.org/download/nginx-1.8.1.tar.gz    ########或者 rz 上传本地的nginx包 2.安装pcre yum install pcre-devel -y                      ########依赖包 3.安装openssl yum install openssl-devel  

Nginx详细安装部署教程

一.Nginx简介 Nginx是一个web服务器也可以用来做负载均衡及反向代理使用,目前使用最多的就是负载均衡,具体简介我就不介绍了百度一下有很多,下面直接进入安装步骤 二.Nginx安装 1.下载Nginx及相关组件 Linux系统是Centos 6.5 64位,我直接切换到root用户下安装 进入用户目录下载程序 下载相关组件 [[email protected] src]# wget http://nginx.org/download/nginx-1.10.2.tar.gz 省略安装内容.

linux下nginx负载均衡部署

nginx负载均衡部署 Nginx("engine x") 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器. Nginx 是由 IgorSysoev 为俄罗斯访问量第二的 Rambler.ru站点开发的,第一个公开版本0.1.0发布于2004年10月4日.其将源代码以类BSD许可证的形式发布,因它的稳定性.丰富的功能集.示例配置文件和低系统资源的消耗而闻名.2011年6月1日,nginx 1.0.4发布. 一般我们都需要先装pcre,

Nginx+uWSGI+Django部署web服务器

目录 Nginx+uWSGI+Django部署web服务器 环境说明 前言 搭建项目 Django部署 编辑luffy/luffy/settings.py 编辑luffy/app01/views.py 编辑luffy/luffy/urls.py 运行并测试 uWSGI部署 测试运行uWSGI 使用uWSGI运行django项目 uWSGi热加载Djangoa项目 部署nginx nginx配置uwsgi和django django部署static文件 重新加载nginx进行测试 测试nginx

使用Nginx+IIS的部署方案实现负载均衡

使用Nginx+IIS的部署方案实现负载均衡 这段时间一直在研究负载均衡问题,用家用电脑搭建了个Nginx+IIS的负载均衡部署,算是个入门级别的说明吧,因为是测试简化版本的部署方案搭建,所以使用的是测试业务.在文章初期我先明确一下问题: 1.负载均衡是什么? 2.为什么使用负载均衡? 3.处理负载均衡还可以有别的优化方案吗? 4.什么时候必须用负载均衡? 下面我依次回答这些问题: 问题1.负载均衡是什么? 百度百科给负载均衡的定义是,负载均衡是建立在现有网络结构之上,它提供了一种廉价有效透明的

【转】windows下nginx+mono+fastCGI部署asp.net网站

原文链接:http://www.cnblogs.com/amityat/archive/2011/08/23/2150153.html 1,什么是nginx 简介Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器. Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,它已经在该站点运行超过两年半了.Igor 将源代码以类BSD许可证的形式发布.尽管还是测试

使用Nginx和uwsgi部署Flask项目

前言 之前用Flask框架开发了一个Python的Web项目,使用Nginx和uWSGI部署起来感觉挺麻烦,过程中还因为对Flask框架的不熟悉,花了好长时间才把应用完全部署起来.下面分享部署成功的相关配置以及部署Flask项目时极可能犯的一个小错误. 一. 配置 1. Flask Web项目源码 Nginx使用的版本是1.6.1,uWSGI是2.0.8,Flask是0.10.1.在Linux环境下安装好Nginx.uWSGI和Flask之后,将使用Flask框架开发的web项目源码放到Linu

Nginx之热部署

nginx 作为一个反向代理.负载均衡服务器,必须具备高可用的特点,因此 nginx 支持热部署.nginx 的热部署和其并发模型有着密不可分的关系.说白了,就是因为 master 进程的关系.当通知 ngnix 重读配置文件的时候,master 进程会进行语法错误的判断.如果存在语法错误的话,返回错误,不进行装载:如果配置文件没有语法错误,那么 ngnix 也不会将新的配置调整到所有 worker 中.而是,先不改变已经建立连接的 worker,等待 worker 将所有请求结束之后,将原先在