当网站业务量急剧增大的时候,机器的扩容缩容就是家常便饭,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(多站点)》对你有帮助,请点赞、收藏,并留下你的观点哦!