1.安装
wget https://github.com/etcd-io/etcd/releases/download/v3.3.12/etcd-v3.3.12-linux-amd64.tar.gz
tar zxvf etcd-v3.3.12-linux-amd64.tar.gz
cd etcd-v3.3.12-linux-amd64
cp etcd etcdctl /usr/bin/
2.配置
vi /usr/lib/systemd/system/etcd.service
[Unit]
Description=Etcd ServerAfter=network.targetAfter=network-online.targetWants=network-online.target[Service]
Type=notifyWorkingDirectory=/var/lib/etcd/EnvironmentFile=-/etc/etcd/etcd.confUser=etcd# set GOMAXPROCS to number of processorsExecStart=/bin/bash -c "GOMAXPROCS=$(nproc) /usr/bin/etcd --name=\"${ETCD_NAME}\" --data-dir=\"${ETCD_DATA_DIR}\" --listen-client-urls=\"${ETCD_LISTEN_CLIENT_URLS}\""Restart=on-failureLimitNOFILE=65536[Install]
WantedBy=multi-user.target
vi /etc/etcd/etcd.conf
#[Member]
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"ETCD_LISTEN_PEER_URLS="http://0.0.0.0:2380"ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379,http://0.0.0.0:4001"ETCD_NAME="node1"#[Clustering]ETCD_INITIAL_ADVERTISE_PEER_URLS="http://192.168.56.14:2380"ETCD_ADVERTISE_CLIENT_URLS="http://192.168.56.14:2379,http://192.168.56.14:4001"ETCD_INITIAL_CLUSTER="master=http://192.168.56.11:2380,node1=http://192.168.56.14:2380"ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"ETCD_INITIAL_CLUSTER_STATE="new"
3.启动服务并测试
systemctl restart etcd
systemctl status etcd
etcdctl member list #查看状态
etcdctl set hello aaa #设置测试值
到另外一台节点 etcdctl get hello 能看到值即可
4.confd配置
vi /etc/confd/conf.d/app01.conf.toml
[template]
# 默认在/etc/confd/templates目录下src = "app01.conf.tmpl" # 要更新的配置文件dest = "/usr/local/nginx/conf/vhost/app01.conf" keys = [ "/nginx/www/"]# 最后执行的命令reload_cmd ="echo test"
vi /etc/confd/templates/app01.conf.tmpl
upstream www.{
{getv "/nginx/www/server_name"}} { { {range getvs "/nginx/www/upstream/*"}} server { {.}};{ {end}}}server {
server_name www.{ {getv "/nginx/www/server_name"}}; location / { proxy_pass http://www.{ {getv "/nginx/www/server_name"}}; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; }}5.在etcd上设置key
etcdctl -C http://192.168.56.11:2379 set /nginx/www/server_name 123.com
etcdctl -C http://192.168.56.11:2379 set /nginx/www/upstream/server01 “192.168.1.10:80”
etcdctl -C http://192.168.56.11:2379 set /nginx/www/upstream/server02 “192.168.1.11:80”
6.启动confd
confd -watch -backend etcd -node http://192.168.56.11:2379