nginx动态负载均衡、consul,upsync

记录一下nginx动态负载均衡,用到consul注册、发现服务中间件

consul启动

consul对外提供的端口, 不同的端口有不同的作用, 了解即可。

image

启动consul服务端

consul agent -server -bootstrap-expect 1 -data-dir /tmp/consul -node=consulserver -bind=172.16.16.16 -http-port=8081 -ui -client=0.0.0.0

参数含义:

agent
-server表示启动的是一个服务
-bootstrap-expect 1 表示等待多少个节点再启动, 这里1个, 就是自己一个就启动了
-node=texun_1 就是给consul服务起个别名为consulserver
-bind=172.17.114.76 绑定内网ip 这里可以不填写,就默认本机
-data-dir /tmp/consul 数据存储目录为/tmp/consul
-http-port 要侦听的 HTTP API 端口。这会覆盖默认端口 8500。
-ui 启动默认ui界面
-client consul绑定在哪个client地址上, 这个地址提供HTTP、 DNS、 RPC等服务, 默认是127.0.0.1, 可指定允许客户端使用什么ip去访问

注意:
要关闭掉防火墙,要不然开不起来,或者打开对应的端口
image

nginx添加upsync模块

我用的是宝塔,参照的文章是这个:https://www.daniao.org/13274.html
建议安装编译版本,这样才会有/www/server/nginx/src的文件,到时要新增模块的时候也方便。
本人是先把upsync模块放在服务器上解压,然后重新安装nginx
image
image
查看有没有添加成功模块
image

nginx 配置

worker_processes  2;
worker_cpu_affinity auto;  #自动绑定cpu跟进程的关系
events {
    worker_connections  100000; #设置单个worker连接数
}
error_log /data/bogiang/code/nginx/upsync/log/error.log;
http {
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;

    upstream swo_http_up {
        server  localhost:9501;

        upsync  106.55.23.124:8081/v1/kv/upstreams/test upsync_timeout=6m upsync_interval=500ms  upsync_type=consul  strong_dependency=off;
        upsync_dump_path /data/bogiang/code/nginx/upsync/servers_test.conf;
        include /data/bogiang/code/nginx/upsync/servers_test.conf;  #没有这个文件的话先创建好

    }
    server {
        listen       80;
        server_name  localhost;

        location /swoole {
             proxy_pass http://swo_http_up;
        }
        location / {
            autoindex on;
            root /data/bogiang/code/nginx/upsync/;
        }
    }
}

解释:
127.0.0.1:8500/v1/kv/upstreams =》 连接consul的api资源地址
swoole_test =》 相当于我们自己在consul中自定义的key
upsync_timeout =》 超时时间6分钟
upsync_interval =》 定时获取信息的时间
upsync_type =》 类型
strong_dependency=on; =》 是否依赖consul运行
upsync_dump_path =》 拉取之后申请配置文件

添加服务

curl -X PUT -d '{"weight":1, "max_fails":2, "fail_timeout":10}' http://$consul_ip:$port/v1/kv/$dir1/$upstream_name/$backend_ip:$backend_port

[root@VM-16-16-centos upsync]# curl -X PUT -d '{"weight":1, "max_fails":2, "fail_timeout":10}' http://127.0.0.1:8081/v1/kv/upstreams/test/127.0.0.1:9001
true[root@VM-16-16-centos upsync]# curl -X PUT -d '{"weight":1, "max_fails":2, "fail_timeout":10}' http://127.0.0.1:8081/v1/kv/upstreams/test/127.0.0.1:9002
true[root@VM-16-16-centos upsync]# curl -X PUT -d '{"weight":1, "max_fails":2, "fail_timeout":10}' http://127.0.0.1:8081/v1/kv/upstreams/test/127.0.0.1:9003
true[root@VM-16-16-centos upsync]#

image

servers_test.conf文件:
image

posted @ 2021-06-02 15:01  bogiang  阅读(207)  评论(0编辑  收藏  举报