Nginx+Upsync+Consul搭建动态负载均衡环境

Nginx+Upsync+Consul实现动态负载均衡

Consul由Go语言开发,部署起来非常容易,只需要极少的可执行程序和配置文件,具有绿色、轻量级的特点。Consul是分布式的、高可用的、 可横向扩展的用于实现分布式系统的服务发现与配置。 nginx-upsync-module是新浪微博开源插件,在此作用为:拉取 consul 的后端 KV的列表,并更新 Nginx 的路由信息。

1、下载需要的软件包

虚拟机采用:Centos7
consul:

wget https://releases.hashicorp.com/consul/0.7.5/consul_0.7.5_linux_amd64.zip

nginx(注意:nginx版本一定要>=1.9.10版本:

wget http://nginx.org/download/nginx-1.9.10.tar.gz

nginx-upsync-module:

wget https://github.com/weibocom/nginx-upsync-module/archive/master.zip
2、安装Consul

进入安装包下载保存目录(ps:如果下载好后没有切换目录,就已经在下载目录,可忽略此操作)

cd /data/nginx   #注意调整为自己的软件下载保存目录

新建consul文件夹

mkdir /usr/local/consul  #新建consul安装目录

解压consul压缩包,进行安装

yum install -y zip unzip #如已安装可忽略
unzip consul_0.7.5_linux_amd64.zip -d /usr/local/consul  #解压安装到指定目录

验证是否安装成功

cd /usr/local/consul #进入consul安装目录
./consul version #查看consul版本

启动consul,并且输出日志文件(注意ip为当前服务器ip)

nohup /usr/local/consul/consul agent -server -dev -ui -node=consul-dev -client=10.118.241.165 >> /usr/local/consul/consul.log 2>&1 &

测试是否启动成功,首先要打开8500端口号

firewall-cmd --zone=public --add-port=8500/tcp --permanent
firewall-cmd --reload

浏览器访问10.118.241.165:8500,出现下面页面代表成功
在这里插入图片描述

3、安装nginx配置nginx-upsync-module

(1)、进入压缩包存放目录:

cd /data/nginx

(2)、解压nginx,解压upsync压缩包

tar -zxvf nginx-1.9.10.tar.gz  #解压nginx
unzip master.zip   # 解压upsync压缩包

注意nginx和nginx-upsync-module一定要解压到同一个目录中
(3)、准备nginx前置环境目录

groupadd nginx
useradd -g nginx -s /sbin/nologin nginx
mkdir -p /var/tmp/nginx/client
mkdir -p /usr/local/nginx

(4)、编译、安装Nginx

cd /data/nginx/nginx-1.9.10  #进入nginx解压后的目录

# 编译
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_ssl_module --with-http_flv_module --with-http_stub_status_module --with-http_gzip_static_module --with-http_realip_module --http-client-body-temp-path=/var/tmp/nginx/client/ --http-proxy-temp-path=/var/tmp/nginx/proxy/ --http-fastcgi-temp-path=/var/tmp/nginx/fcgi/ --http-uwsgi-temp-path=/var/tmp/nginx/uwsgi --http-scgi-temp-path=/var/tmp/nginx/scgi --with-pcre --add-module=../nginx-upsync-module-master

#安装
make && make install

编译的是报错
./configure: error: SSL modules require the OpenSSL library.
解决办法
yum -y install openssl openssl-devel
(4)创建upsync拉取consul配置持久化目录

mkdir -p /usr/local/nginx/conf/servers/

(5)、配置nginx.conf文件:
vim /usr/local/nginx/conf/nginx.conf

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

    sendfile        on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;
    # 动态负载均衡配置
    upstream amazecode{
        #用于心跳检测
        server 127.0.0.1:11111;
        #去consul的KV拉取上游服务器信息
        upsync 10.118.241.165:8500/v1/kv/upstreams/amaze
                        upsync_timeout=6m upsync_interval=500ms
                        upsync_type=consul strong_dependency=off;
        #存放拉取到的上游服务器信息,/usr/local/nginx/conf/servers  这个目录需要创建
        upsync_dump_path /usr/local/nginx/conf/servers/servers_test.conf;
    }
    server {
        listen       80;
        server_name  localhost;
        location / {
            #反向代理配置
            proxy_pass http://amazecode;
            index  index.html index.htm;
        }
    }
}

(6)、启动nginx

cd /usr/local/nginx/sbin/
./nginx   #启动nginx
./nginx -s reload #重新加载配置文件
ps -ef | grep nginx #检查是否启动成功
4、测试动态负载均衡

整体测试步骤:
1)、先通过接口获取者页面向consul需要负载均衡的服务(ip和端口号),添加8080
2)、启动8080服务,然后访问nginx服务器,其他服务器通过浏览器以ip地址访问10.118.241.165(nginx安装服务器),此时不断刷新只是出现8080,如图
在这里插入图片描述
3)、在通过接口向consul中添加,一个8081的服务,然后直接浏览器访问10.118.241.165(nginx安装服务器),刷新几次出现8081端口代表动态负载均衡安装成功

consul添加服务接口

注意:接口中的amaze,一定要和nginx中配置的目录一致,否则负载均衡代理不了

#1.使用linux命令方式发送put请求
curl -H "Content-Type: application/json" -X PUT -d "{\"weight\":1, \"max_fails\":2, \"fail_timeout\":10, \"down\":0}" "http://10.118.241.165:8500/v1/kv/upstreams/amaze/192.168.101.1:8080" 

curl -H "Content-Type: application/json" -X PUT -d "{\"weight\":1, \"max_fails\":2, \"fail_timeout\":10, \"down\":0}" "http://10.118.241.165:8500/v1/kv/upstreams/amaze/192.168.101.1:8081" 

#2.使用postmen 发送put请求
http://10.118.241.165:8500/v1/kv/upstreams/amaze/192.168.101.1:8080
http://10.118.241.165:8500/v1/kv/upstreams/amaze/192.168.101.1:8081
# 参数
{"weight":1, "max_fails":2, "fail_timeout":10, "down":0}

192.168.101.1:端口号 #表示需要新增的服务

至此,整体环境搭建完成。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Sure, 我可以为您提供 keepalived 和 nginx负载均衡搭建方法,以下是步骤: 1. 安装 Nginx ``` sudo apt-get update sudo apt-get install nginx ``` 2. 配置 Nginx 使用 root 用户编辑 /etc/nginx/nginx.conf 文件,加入以下内容: ``` http { upstream app_servers { server 192.168.1.1:8000 weight=1; server 192.168.1.2:8000 weight=2; } server { listen 80; location / { proxy_pass http://app_servers; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } } } ``` 其中,app_servers 为后端服务器地址和端口,weight=1 和 weight=2 为权重,可以根据需要调整。 3. 安装 keepalived ``` sudo apt-get install keepalived ``` 4. 配置 keepalived 使用 root 用户编辑 /etc/keepalived/keepalived.conf 文件,加入以下内容: ``` vrrp_script chk_nginx { script "/etc/keepalived/check_nginx.sh" interval 2 } vrrp_instance VI_1 { interface eth0 state MASTER virtual_router_id 51 priority 101 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.1.100/24 } track_script { chk_nginx } } ``` 其中,eth0 是 virtual_ipaddress 所在的网卡,virtual_router_id 为相同的值,priority 根据实际情况设置,authentication 中的 auth_pass 可以修改。 5. 编辑 keepalived 健康检查脚本 使用 root 用户创建 /etc/keepalived/check_nginx.sh 文件,加入以下内容: ``` #!/bin/sh NGINX_STATUS=`curl -s -I -m 10 -o /dev/null -w '%{http_code}' http://127.0.0.1` if [ "${NGINX_STATUS}" = "200" ]; then exit 0 else exit 1 fi ``` 其中,127.0.0.1 是本机 IP,根据实际情况修改。 6. 启动 keepalived ``` sudo service keepalived start ``` 这样就完成了 keepalived 和 nginx负载均衡搭建。请注意,以上步骤仅供参考,具体情况还需根据实际情况进行调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值