ppc64le centos7 安装confd 并结合etcd实现haproxy的高可用
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
1. 到http://rpmfind.net/下载以下4个包:
golang-1.6.2-1.fc24.ppc64le.rpm
golang-bin-1.6.2-1.fc24.ppc64le.rpm
golang-src-1.6.2-1.fc24.noarch.rpm
go-srpm-macros-2-3.fc23.noarch.rpm
2. yum -y install golang*.rpm
3. 设置GOPATH变量为 $HOME,即:
export GOPATH=$HOME
4. 安装gb
go get github.com/constabulary/gb/...
5. 下载 confd-0.11.0的tar.gz包
cd confd-0.11.0
./build && ./install
6. cat > /usr/lib/systemd/system/confd.service <<EOF
Description=Confd
After=haproxy.service
ExecStart=/usr/bin/confd
Restart=always
WantedBy=basic.target
EOF
7. 创建一个配置和模版目录
mkdir -p /etc/confd/{conf.d,templates}
8. 创建confd的主配置(全局配置)文件,此文件用于设置与etcd服务器相关的一些设置,配置如下:
cat > /etc/confd/confd.toml <<EOF
confdir = "/etc/confd" #指定confd的主配置目录
interval = 20 #指定间隔多长时间与etcd同步更新
backend = "etcd" #指定后端的键值存储服务器的类型,如:etcd、consul、zookeeper
nodes = [ #指定列出后端的节点,可以有多个
"http://172.16.0.204:4001" #此地址为etcd服务器的地址
]
prefix = "/" #键的前缀是什么
scheme = "http" #指定后端的scheme,如:http、https
verbose = true
EOF
9. 在/etc/confd/conf.d 里面生成指定应用的配置文件,此处为haproxy.toml,配置如下:
cat > /etc/confd/confd.toml <<EOF
src = "haproxy.cfg.tmpl" #定义配置文件的模板名称,此文件存放于/etc/confd/templates
dest = "/etc/haproxy/haproxy.cfg" #要被同步的haproxy的配置文件路径
keys = [
"/backend" #指定后端存放键值的目录
]
reload_cmd = "/usr/bin/systemctl reload haproxy" #更新同步完配置文件后,重新加载haproxy服务
EOF
10. 生成haproxy.cfg.tmpl模板文件
.
.
(略)
.
.
frontend http-in
bind *:8080
acl homepage path_reg ^/$
acl status path_beg /haproxyadmin
redirect location /hds/ if homepage
use_backend status if status
default_backend app
backend status
stats enable
stats hide-version
stats uri /haproxyadmin?stats
stats realm Haproxy\ Statistics
stats auth admin:admin
stats admin if TRUE
backend app
balance source
option httpclose
option forwardfor
{{range gets "/backend/*"}} #range表示循环,gets表示获取键值对
server {{base .Key}} {{.Value}} check maxconn 1000 #base .Key 类似于Linux命令basename;.Value表示键所对应的值。
{{end}}
11. systemctl enable /etc/systemd/system/confd.service
systemctl start /etc/systemd/system/confd.service
注:后端etcd服务器配置如下:
curl http://172.16.0.204:4001/v2/keys/backend/app1 -XPUT -d value='172.16.1.45:8080'
curl http://172.16.0.204:4001/v2/keys/backend/app2 -XPUT -d value='172.16.0.204:8080'
页:
[1]