失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 通过Etcd+Confd自动管理Haproxy(多站点)

通过Etcd+Confd自动管理Haproxy(多站点)

时间:2021-12-06 23:26:49

相关推荐

通过Etcd+Confd自动管理Haproxy(多站点)

当网站业务量急剧增大的时候,机器的扩容缩容就是家常便饭,Haproxy作为负载均衡器的变更频率就急剧加大,特别是Docker的出现,这个时候再也不能通过vim修改配置文件的形式去对业务进行变更。

etcd:k/v形式的键值存储,用于存放配置

confd:根据从etcd中获取的配置,对haproxy进行修改

#confd的安装wget/kelseyhightower/confd/releases/download/v0.11.0/confd-0.11.0-linux-amd64mvconfd*/usr/local/bin/confdchmod+x/usr/local/bin/confd/usr/local/bin/confd-version#etcd的安装wget/coreos/etcd/releases/download/v3.1.1/etcd-v3.1.1-linux-amd64.tar.gztarzxfetcd-v3.1.1-linux-amd64.tar.gzcdetcd-v3.1.1-linux-amd64cpetcd*/bin//bin/etcd-version#etcd的启动mkdir/data/etcdetcd--nameetcdserver--data-dir/data/dir--listen-peer-urls'http://192.168.2.202:2380'--listen-client-urls'http://192.168.2.202:2379,http://127.0.0.1:2379'--initial-advertise-peer-urls'http://192.168.2.202:2380'--advertise-client-urls'http://192.168.2.202:2379,http://127.0.0.1:2379'&#confg的配置mkdir-p/etc/confd/{conf.d,templates}vim/etc/confd/conf.d/haproxy.toml[template]src="haproxy.cfg.tmpl"dest="/etc/haproxy/haproxy.cfg"keys=["/web",]reload_cmd="/etc/init.d/haproxyreload"/etc/confd/templates/haproxy.cfg.tmplgloballog127.0.0.1local3maxconn5000uid99gid99daemondefaults#log127.0.0.1local3modehttpoptiondontlognullretries3optionredispatchmaxconn2000timeoutconnect5000timeoutclient50000timeoutserver50000frontendwebinbind:80modehttp{{$domains:=lsdir"/web"}}{{range$domain:=$domains}}acl{{$domain}}hdr(host)-i{{$domain}}`end`{{range$domain:=$domains}}use_backend{{$domain}}_clusterif{{$domain}}`end`{{range$domain:=$domains}}backend{{$domain}}_clusteroptionhttpchkHEAD/health.htmlHTTP/1.1\r\nHost:{{$domain}}cookieSERVERIDinsertindirectnocache{{$servers:=printf"/web/%s/*"$domain}}{{rangegets$servers}}server{{base.Key}}``.`Value`cookie{{base.Key}}checkinter5000rise2fall3weight1`end``end`#启动confd/usr/local/bin/confd-interval5-node'192.168.2.202:2379'-confdir/etc/confd&

注册服务器

curl-XPUThttp://192.168.2.202:2379/v2/keys/web//prickly_blackwell-dvalue="192.168.2.201:49162"curl-XPUThttp://192.168.2.202:2379/v2/keys/web//prickly_blackwell-dvalue="192.168.2.201:49162"curl-XPUThttp://192.168.2.202:2379/v2/keys/web//prickly_blackwell-dvalue="192.168.2.201:49162"

etcd注册格式

http://192.168.2.202:2379/v2/keys/web/DOMAIN_NAME/SERVER_NAME-d value="IP:PORT"

http://192.168.2.202:2379/v2/keys/web/域名/服务器名 -d value="IP:端口"

查看/etc/haproxy/haproxy.cfg

globallog127.0.0.1local3maxconn5000uid99gid99daemondefaultslog127.0.0.1local3modehttpoptiondontlognullretries3optionredispatchmaxconn2000contimeout5000clitimeout50000srvtimeout50000frontendwebinbind:hdr(host)-hdr(host)-hdr(host)-_clusteroptionhttpchkHEAD/health.htmlHTTP/1.1\r\nHost:cookieSERVERIDinsertindirectnocacheserverprickly_blackwell192.168.2.201:_clusteroptionhttpchkHEAD/health.htmlHTTP/1.1\r\nHost:cookieSERVERIDinsertindirectnocacheserverprickly_blackwell192.168.2.201:49162cookieprickly_blackwellcheckinter5000rise2fall3weight1backendoptionhttpchkHEAD/health.htmlHTTP/1.1\r\nHost:cookieSERVERIDinsertindirectnocacheserverprickly_blackwell192.168.2.201:49162cookieprickly_blackwellcheckinter5000rise2fall3weight1

本文参考:

/post/242/

/articles/8708

在此感谢!

如果觉得《通过Etcd+Confd自动管理Haproxy(多站点)》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。