专栏电商日志财经减肥爱情
投稿投诉
爱情常识
搭配分娩
减肥两性
孕期塑形
财经教案
论文美文
日志体育
养生学堂
电商科学
头戴业界
专栏星座
用品音乐

Nginx利用Consul实现动态负载均衡

  首先,说声抱歉哈,最近更新的比较慢,不是工作比较忙,而是自己变懒了,对不住各位了一。前言
  由于最近手中的项目在不断更新迭代,经常对服务做些调整,一调整就需要改配置文件,真是烦死了,这里先简单说下我司架构,openresty当前端网关,利用nginx反向代理多应用服务器,提供服务(不重要的服务省略了),通过查资料发现,利用consul可以和nginx配合,实现动态修改nginx配置的需求二。资源说明
  10。10。100。4centos系统nginx服务consultemplate服务
  10。10。100。3centos系统consul服务web1服务web2服务
  由于资源有限,就开了2台虚拟机来模拟一下,当然可以用docker实现,这里就不演示了,consul服务也不开集群模式了,同时consul服务与web服务就放在同一个服务器上了,看懂意思就可以了,多个web服务,就以不同的端口来区分三。安装过程3。1在10。10。100。4安装openrestyaddtheyumrepo:wgethttps:openresty。orgpackagecentosopenresty。reposudomvopenresty。repoetcyum。repos。d更新sudoyumcheckupdate安装sudoyuminstallopenresty启动systemctlstartopenresty。service开机自启动systemctlenableopenresty。service
  验证安装成功浏览器访问10。10。100。4在10。10。100。4服务器上的命令行中执行curl127。0。0。13。2在10。10。100。4安装consultemplateconsultemplate是基于consul自动替换配置文件的应用。在ConsulTemplate没出现之前,大家构建服务发现系统大多采用的是Zookeeper、EtcdConfd这样类似的系统。
  Consul官方推出了自己的模板系统ConsulTemplate后,动态的配置系统可以分化为EtcdConfd和ConsulConsulTemplate两大阵营。ConsulTemplate的定位和Confd差不多,Confd的后端可以是Etcd或者Consul。
  ConsulTemplate提供了一个便捷的方式从Consul中获取存储的值,ConsulTemplate守护进程会查询Consul实例来更新系统上指定的任何模板。当更新完成后,模板还可以选择运行一些任意的命令。下载wgethttps:releases。hashicorp。comconsultemplate0。29。2consultemplate0。29。2linuxamd64。zip解压unzipconsultemplate0。29。2linuxamd64。zip添加到环境变量中,这里直接复制到里面mvconsultemplateusrlocalbin查看版本consultemplatev3。3在10。10。100。3安装consulsudoyuminstallyyumutils配置源sudoyumconfigmanageraddrepohttps:rpm。releases。hashicorp。comRHELhashicorp。repo安装consulsudoyumyinstallconsul查看版本consulv测试环境这里使用单机dev模式了,这种模式只能使用127。0。0。1的ip访问consulagentdev客户端ip访问可以指定client参数就可以访问了http:10。10。100。3:8500uidc1servicesconsulagentdevuiclient10。10。100。33。4在10。10。100。3安装web应用服务
  这里的web服务,我使用go语言实现了,源码在后面,这里通过不同的端口,来对应多个不同的服务,go程序编译后就是一个二进制文件,直接上传到服务器,运行即可!
  上传web服务到10。10。100。3,并启动go程序编译命令gobuildoweb01main。go修改端口号,重新编译gobuildoweb02main。go修改端口号,重新编译gobuildoweb03main。go上传到10。10。100。3服务器的web目录启动命令cdwebnohup。web01devnull21nohup。web02devnull21nohup。web03devnull21
  web服务源码如下:packagemainimport(fmtconsulapigithub。comhashicorpconsulapinethttp)const(CONSULURL10。10。100。3CONSULPORT8500SERVERADDR10。10。100。3SERVERPORT8081端口需要修改,8081,8082,8083SERVERNAMEgoserverSERVERID100需要修改100,200,300checkAddr10。10。100。3checkPort8081端口需要修改8081,8082,8083)funcconsulRegister(){链接到consulconfig:consulapi。DefaultConfig()config。Addressfmt。Sprintf(s:d,CONSULURL,CONSULPORT)client,err:consulapi。NewClient(config)iferr!nil{fmt。Println(consulclienterr,err)return}注册服务到consulregistion:new(consulapi。AgentServiceRegistration)registion。IDSERVERIDregistion。NameSERVERNAMEregistion。PortSERVERPORTregistion。AddressSERVERADDRregistion。Tags〔〕string{web03,goweb03}增加consul健康检查回调函数check:new(consulapi。AgentServiceCheck)check。HTTPfmt。Sprintf(http:s:ds,checkAddr,checkPort,check)check。Timeout5scheck。Interval5scheck。DeregisterCriticalServiceAfter30s故障检查失败30s后,自动删除删除registion。Checkcheck注册服务errclient。Agent()。ServiceRegister(registion)iferr!nil{fmt。Println(注册服务失败,err)return}}funcmain(){consulRegister()http。HandleFunc(check,func(writerhttp。ResponseWriter,requesthttp。Request){writer。Write(〔〕byte(我是check))})http。HandleFunc(,func(writerhttp。ResponseWriter,requesthttp。Request){writer。Write(〔〕byte(我是8081端口服务返回的))})fmt。Println(启动。。。。)err:http。ListenAndServe(fmt。Sprintf(s:d,,SERVERPORT),nil)iferr!nil{fmt。Println(启动http失败,err)}}3。5在10。10。100。4配置consultemplate文件
  consultemplate的常用参数consulauthusername〔:password〕设置基本的认证用户名和密码。consuladdr设置Consul实例的地址。maxstaleduration查询过期的最大频率,默认是1s。dedup启用重复数据删除,当许多consultemplate实例渲染一个模板的时候可以降低consul的负载。consulssl使用https连接Consul。consulsslverify通过SSL连接的时候检查证书。consulsslcertSSL客户端证书发送给服务器。consulsslkey客户端认证时使用的SSLTLS私钥。consulsslcacert验证服务器的CA证书列表。consultokentoken设置ConsulAPI的token。syslog把标准输出和标准错误重定向到syslog,syslog的默认级别是local0。syslogfacilityfacility设置syslog级别,默认是local0,必须和syslog配合使用。templatetemplate增加一个需要监控的模板,格式是:templatePath:outputPath(:command),多个模板则可以设置多次。waitduration当呈现一个新的模板到系统和触发一个命令的时候,等待的最大最小时间。如果最大值被忽略,默认是最小值的4倍。retryduration当在和consulapi交互的返回值是error的时候,等待的时间,默认是5s。configpath配置文件或者配置目录的路径。pidfilepathPID文件的路径。loglevellevel设置日志级别,可以是debug,info,warn(default),anderr。dryDump生成的模板到标准输出,不会生成到磁盘。once运行consultemplate一次后退出,不以守护进程运行。
  新建nginx配置的模板文件
  注意如果要生成nginx的配置文件,则要一定要与nginx安装到同一台服务器上upstreamgoserver{{{rangeservicegoserver}}{{name:。Name}}upstream{{name}}zoneupstream{{name}}64k;server{{。Address}}:{{。Port}}maxfails3failtimeout60weight1;{{else}}server127。0。0。1:65535;forcea502{{end}}}server{listen8000;servernamelocalhost;location{addheaderAccessControlAllowOrigin;addheaderAccessControlAllowMethodsGET,POST,OPTIONS;addheaderAccessControlAllowHeadersDNT,XMxReqToken,KeepAlive,UserAgent,XRequestedWith,IfModifiedSince,CacheControl,ContentType,Authorization;if(requestmethodOPTIONS){return204;}proxypasshttp:goserver;ProxySettingsproxysetheaderHosthost;proxysetheaderRefererhttpreferer;proxysetheaderCookiehttpcookie;proxysetheaderXRealIPremoteaddr;proxysetheaderXForwardedForproxyaddxforwardedfor;proxyconnecttimeout90;proxysendtimeout90;proxyreadtimeout90;proxybuffersize4k;proxybuffers432k;proxybusybufferssize64k;proxytempfilewritesize64k;}errorpage404404。html;location40x。html{}errorpage50050250350450x。html;location50x。html{}}
  执行命令生成nginx。conf配置文件consultemplateconsuladdr10。10。100。3:8500templatenginx。ctmpl:usrlocalopenrestynginxconfconf。dconsul。conf:usrlocalopenrestybinopenrestysreload
  当然可以使用配置文件生成了vimusrlocalopenrestynginxconfconsulnginxtemplatenginx。hcl
  配置文件如下:wait{min3smax10s}consul{address10。10。100。3:8500}template{sourceusrlocalopenrestynginxconfconsulnginxtemplatenginx。ctmpldestinationusrlocalopenrestynginxconfconf。dconsul。confcommandusrlocalopenrestybinopenrestysreload}
  运行配置文件consultemplateconfigusrlocalopenrestynginxconfconsulnginxtemplatenginx。hcl
  浏览器测试
  我这里绑定了8000端口,所以访问10。10。100。4:8000,就可以发现后端3个go服务开始提供服务了,关闭一个服务,nginx的配置文件也会动态的做出改变结尾:
  这种解决方案是可以解决我们遇到的问题,但是最终开会后确没有使用这种方法来解决,还是使用原始方法手动改,我是无语了,可能是怕麻烦吧

国际最新研究发现最大化石花距今近4000万年保存于琥珀中新网北京1月13日电(记者孙自法)施普林格自然旗下开放获取学术期刊科学报告最新发表一篇化石研究论文称,研究人员利用最新图像记录了一朵保存在琥珀中的已知最大化石花,其直径28毫米,全新微型电动车比亚迪海鸥申报图曝光预计起售价在8万左右日前,我们从工信部最新一期产品目录上,获取到比亚迪海鸥的申报图。新车基于e平台3。0打造,预计今年上半年正式发布。外观方面,比亚迪海鸥的外观设计非常灵动,封闭式前脸搭配锐利的大灯组如何让孩子主动爱上学习?学会这些方法,差生逆袭尖子生如何让孩子主动爱上学习?很多家长在督促和监督孩子学习的时候,会感觉到心累。因为有的孩子自律性比较低,家长一会没看住,他的注意力去不在学习上了。因此,如何能让孩子主动学习成了家长的头40眼袋时有时无是怎么回事?到底用什么方法祛眼袋效果好?有很多40的上班族的求美者和我说,自己30岁时眼袋时有时无的,但近几年眼袋却长期存在无法消退了,这是怎么回事?如果你也正在被眼袋问题所困扰,找不到解决办法,那一定要看完这篇文章哦。葱白这样吃,补元气润肠胃葱是厨房常用的一味调料,不管是炒菜煮粥煲汤,加点葱烹饪,味道更香浓。有时候一个葱花就可以撑起一个菜,比如葱爆羊肉。葱的葱白部分也有很好的养生效果,天气寒冷的时候,弄个几根葱白两片生脾虚,可能是因为心火不旺,送你一个中药方,补益心气,改善脾虚脾虚可以说是现代人最普遍的一个现象了,现在的人十个中有九个都脾虚,但是脾虚的原因却各不相同。很多人脾胃不好就去用一些补脾的药,用了很久都没有效果,这是因为中医把人看做一个整体,五脏天然的嘌呤大王是海鲜的5倍,这1素菜早扔掉,你还在吃吗嘌呤是一种有机化合物,分子式CHN,在人体内嘌呤氧化而变成尿酸。人体尿酸过高就会引起痛风,俗称富贵病。一般在男性身上发病,有遗传概率。嘌呤的全名为嘌呤核苷酸,在人体代谢过程中扮演着名誉太看重了不好有些人,他虽说不把钱看在眼里。但他把自己的名誉,看得非常重要。就是普通人,有的也不怕别人说他无能,不怕别人说他穷。但,他怕别人说他的心里不干净。一生做事谨慎,他从不想占任何人的便宜常喝咖啡,到底好不好?医生这5类人最好不要碰,希望你能听劝咖啡是全世界最受欢迎的饮料之一,它正融入中国城市居民的生活。热闹的街区通常都会有几家咖啡店,门缝中偶尔飘出来的香气,让匆匆的行人慢下了脚步,甚至走进去品尝一杯。除了消遣,咖啡也是很阳康后,3种食物多吃2件小事别做!否则易复阳,身体越来越虚,年都过不好最近,阳康越来越多了,地铁商场又恢复到了人挤人的状态。在经历了刀片喉宝娟嗓水泥鼻等一系列症状之后,大家也逐渐恢复过来了。但问题也来了,怎么做才能让身体更快恢复呢?阳康后多吃3种食物研究实现化学反应的立体动力学精准调控化学反应无处不在。如何精确调控化学反应是化学科学研究的核心目标之一。在化工生产过程中,工程师通过添加催化剂改变化学过程的温度与压力等宏观参数,可以在一定程度上控制化学反应,得到所需
英媒科学家发现,呼吸道合胞体病毒和流感病毒能形成新型混合病毒来源环球时报环球时报综合报道病毒可以合体躲避人体免疫系统?据英国卫报24日报道,科学家发现,呼吸道合胞体病毒和流感病毒能形成新型混合病毒躲避人体免疫系统并感染肺部细胞。报道称,这是老美是怎样割世界韭菜的一个国家,如果政府多印钱,只会及自己的人民,因为其钞票只能在本土流通,无法流通到国外去。而美元不同,它是世界货币老大,在全世界都能买到东西。因此,美国政府拼命的印钱,发给本国人民和元宇宙巨亏扎克伯克仍一意孤行大力支出彻底点燃了股东怒火尽管全力挺进的元宇宙领域还面临巨亏,宏观经济打击公司主要收入源数字广告业务,Meta仍要大力投资构建元宇宙。这种一意孤行令Meta的一些大股东对CEO扎克伯格为首的管理层感到愤怒。小安盘前预测(11月1日)10月已经收官,看看自己账户的收益情况,是不是一片谩骂,有多少人想关掉自己股票账户了?上证指数昨天是个冲高回落的上影线,那么今天有两种情况会出现,走的不好会有大阴线出现,击破286年内累计回购57次,天伦燃气(01600)是否有超额收益机会?在美联储加息俄乌战争疫情反复等多重因素的影响下,恒生指数年内跌超30,这是自2009年以来恒生指数调整幅度最大的年份。但危与机总是相伴而生,获取超额收益的投资机会正在孕育。从过往的三季报收官谁在强势增长?文张云编辑杨秀红2022年三季报披露收官,两市共有4969家上市公司发布了三季报数据。由于公布时间已接近年底,大部分上市公司的全年业绩情况雏形渐显。在外部环境紧张与内部疫情反复的情T1交易制度需要改革吗回答是肯定的,中国成功的秘诀就是各领域不断改革取得了瞩目的成就。从世界范围发达国家股票市场来看,都是采用公平交易且成熟的做市商机制和T0机制。远了欧美股市不必说,香港日本韩国还有俄反思自己近一年半在股市和基金投资的失误以及未来的规划(二)2021年6月份的那段时间,是让我很难忘的,至今回想起来依旧很兴奋,那是我第一次在股市里面尝到比较大的甜头,当时持仓的是一支汽车配件类的公司,业绩还行,而且有给新能源汽车供货的能力Twitter加持狗狗币站上0。15美元!Doge将以某种方式与推特合并?狗狗币(DOGE)因马斯克正式收购推特后有可能成为支付选项,币价大幅飙涨一度站上0。15美元市值也超车Cardano和Solana,名列第8。狗狗币(DOGE)教父马斯克在本周五正最新消息!中国乒乓球国家队解散啦!王楚钦许昕6大主力离开11月1日,2022年WTT新乡世界杯总决赛结束,新科冠军王楚钦成为最大赢家,42横扫日本的19岁天才少年张本智和!接下来,中国乒乓球国家队除了备战11月亚洲杯外,基本上就解散啦,美联储加息在即,金价能继续下跌多少上周五国际黄金在亚盘出现冲高,欧盘回落连续下跌后,一直到美盘,美国公布PCE物价指数年率后,出现扫盘。但是最终金价日线几乎收了一个满阴线。从数据角度来看,PCE大于前值,而小于预期
友情链接:快好找快生活快百科快传网中准网文好找聚热点快软网