Nginx + consul + upsync 完成动态负载均衡的方法详解

Nginx + consul + upsync 完成动态负载均衡的方法详解,第1张

Nginx+consul+upsync完成动态负载均衡的方法详解

本文详细介绍了Nginxconsulupsync的动态负载均衡,有必要的盆友可以参考一下。

外置专业知识 DNS解析域名全过程
  • 在计算机浏览器中键入网站域名,浏览后
  • 在浏览器缓存中搜索匹配的ip和端口,如果是,立即浏览匹配的ip和端口。
  • 如果浏览器缓存中没有,则在本地主机文档中搜索匹配项~~
  • 如果本地主机文档中没有,请在DSN服务器上搜索。
  •  外网映射

    说白了就是把本地的ip详细地址投射成外网地址ip,所有服务器(连接互联网技术的电子计算机)都可以浏览。

  • 疑问:为什么我们必须应用extranet映射?
  • 比如做微信支付,第三方接口回拨功能,手机微信回拨功能,你的socket必须是一个外网地址的详细ip地址,要不然他不能让你回拨功能,导致你无法在本地检测到。此时,您必须将您的ip地址映射到外网地址(服务器可以浏览的互联网)。

  • 疑惑:如何完成外网映射?
  • 根据第三方专用工具,如natapp和ngrok,映射外网。如何实际使用并在官网观看,
    ngrok官网。
    natapp官网。(强烈推荐)

     nginx关键专业知识 什么叫nginx

    Nginx是一个轻量级的web服务器/反向代理服务器,体积小,适合非常高的并发性。

    应用领域

    Http服务器:做静态数据服务器和照片服务器
    云虚拟主机配置:将一台服务器分成若干个网站进行部署。(云虚拟主机可以根据不同域名映射或者不同端口进行配置)
    反向代理:应用反向代理隐藏真实ip详细地址
    反向代理应用领域:
    给你看三个不同的服务器。它可以隐藏三台服务器的真实ip详细地址,nginx根据内部把它们共享给不同的服务器。包捕获软件只能获取nginx服务器的ip详细地址(没有参考点)。
    负载均衡
    安全配置
    应用Nginx构建APIsocket网关ip,处理URL跨域问题
    分离URL的静态数据资源和动态资源。

    基本概念

    四层负载平衡

    在传输层,经常使用TCP协议。

    七层负载平衡

    在网络层,经常使用Http协议。

    负载平衡

    功效:缓解各服务器工作压力,常见故障迁移(重试系统)。如果一台服务器宕机,立即轮询下一台服务器并进行物理检查。在nginx中,上游和下游服务器都是在nginx中配置的。

    常见故障迁移

    如果您浏览其中一个服务器,并发现服务项目服务器已关闭,或者有延迟,您可以配置常见故障迁移以立即切换到另一个服务器。

    ###联接到上下游服务器的時间 proxy_connect_timeout1s; ###推送请求超时時间 proxy_send_timeout1s; ###接纳相对请求超时時间 proxy_read_timeout1s;

    动态负载平衡

    上游的配置不再是静态数据,而是在认证中心获得动态配置,从而实现动态负载均衡。

    Nginxconsulupsync进行动态性负载均衡

    1。安装centos7的基本自然环境

    #基本指令 #安裝netstat指令 yuminstallnetstat #查询全部tcp端口应用状况 netstat-ntlp #查询当今服务项目过程 ps-ef可选:[|grepnginx] #强制性杀掉端口相匹配的程序流程 kill-9pid过程号 #配置yum源 yum-config-manager--add-repohttp://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo yumupdate yuminstall-yyum-utilsdevice-mapper-persistent-datalvm2 #安裝基础自然环境 yuminstallgcc-c yuminstall-ypcrepcre-devel yuminstall-yzlibzlib-devel yuminstall-yopensslopenssl-devel yuminstallwget yuminstallunzip

    2。安装consul(用于注册和发现服务项目的应用程序)

    #免费下载它的安装文件,wget-c中的-c表明上传下载 wget-chttps://releases.hashicorp.com/consul/1.8.5/consul_1.8.5_linux_amd64.zip #缓解压力压缩文件 upzipunzipconsul_1.8.5_linux_amd64.zip #实行./consul指令,实行后出現Usage:consul[--version][--help]<command>[<args>]这一行及其下边的一些主要参数则意味着这一consul没什么问题 ./consul #关闭防火墙 systemctlstopfirewalld #起动consul,这一ip填好自身电子计算机的ip,如果是vm虚拟机就填vm虚拟机的ip,centos查看ip详细地址可以用ipaddr,window查看ip用ipconfig ./consulagent-dev-ui-node=consul-dev-client=192.168.254.134 #自然,还可以应用后台程序的方法,这样子輸出的日志返回平级的nohup.out文档中 nohup./consulagent-dev-ui-node=consul-dev-client=192.168.254.134& #浏览consul的web页面 192.168.254.134:8500 #查询并关掉consul的后台进程,我这里写的19854是jobs-l查看到的过程pid jobs-l kill-919854

    3。安装nginx并添加同步控制模块

    #免费下载upsync控制模块而且将其缓解压力 wget-chttps://github.com/weibocom/nginx-upsync-module/archive/master.zip unzipnginx-upsync-module-master.zip #免费下载nginx wget-chttp://nginx.org/download/nginx-1.9.9.tar.gz #缓解压力到当前目录 tar-zxvfnginx-1.9.9.tar.gz #配置一个nginx的客户及其用户群,-s/sbin/nologinnginx意味着该客户是无法登录到服务器的 groupaddnginx useradd-gnginx-s/sbin/nologinnginx #这两个文件夹名称会在编译程序nginx时特定 mkdir-p/var/tmp/nginx/client/ mkdir-p/usr/local/nginx #进到到nginx的缓解压力后文件夹名称的文件目录下 cdnginx-1.9.9 #编译程序nginx,--prefix意味着nginx安裝的文件目录。在其中特定了客户和用户群,及其上边建立的文件夹名称而且加上了upsync控制模块,因为upsync缓解压力在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&&makeinstall ##进到到不久nginx安裝的文件目录,也就是/usr/local/nginx文件目录中,进到conf文件目录中编写conf文件目录的文档內容 upstreammyserver{ server127.0.0.1:11111;#这一固定不动的,无需理 #springbootserver:key的值,upsync_timeout请求超时時间3秒,upsync_interval时间间隔,upsync_type种类consul,strong_dependency提高依靠 upsync192.168.254.134:8500/v1/kv/upstreams/springbootserverupsync_timeout=2500supsync_interval=1000msupsync_type=consulstrong_dependency=off; #将获取出来的配置文档放到下列配置的文件目录中 upsync_dump_path/usr/local/nginx-1.9.9/conf/upsync_dump.conf; } #将server中的location特定为不久建立的upstream(上下游服务器) location/{ proxy_passhttp://myserver; indexindex.htmlindex.htm; } #进到到sbin文件目录下,起动nginx ./nginx

    4。进行测试

  • 设备启动两个服务项,分别是8080和8081,详细ip地址是192.168.0.116。
  • linux应用程序指令是特定于consul的两个键值,192.168.254.134是consul的详细ip地址。
  • #应用curl要求,一定如果put请求 curl-XPUThttp://192.168.254.134:8500/v1/kv/upstreams/springbootserver/192.168.0.116:8080 curl-XPUThttp://192.168.254.134:8500/v1/kv/upstreams/springbootserver/192.168.0.116:8081 #或是应用postman启用consul出示的api来加上key,value http://192.168.254.134:8500/v1/kv/upstreams/springbootserver/192.168.0.116:8081 #乃至能够图形界面页面开展实际 *** 作,手动式加上keyvalue,手动式加上时留意如果是创建文件夹必须在最终加一个正斜线:/

    5。将key的匹配值添加到consul图形界面的网页中,以指定负载均衡的优化算法

    {"weight":1,"max_fails":2,"fail_timeout":10,"down":0}

    然后,由于wget的下载速度有时很慢,文档被提交到这里。

    文档连接

    关于nginx动态负载平衡的这篇文章就讲到这里了,咨询upsync。有关nginx的动态负载平衡的大量信息,请搜索您以前的文章或再次访问下面的相关文章。期待你以后更多的应用!

    欢迎分享,转载请注明来源:内存溢出

    原文地址: https://outofmemory.cn/zz/774195.html

    (0)
    打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
    上一篇 2022-05-03
    下一篇 2022-05-03

    发表评论

    登录后才能评论

    评论列表(0条)

    保存