文章目录
Docker + consul的容器服务更新与发现
Consul-Template
Consul-Template 是一个基于 Consul 的应用,用于自动替换配置文件。它是一个守护进程,能够实时查询 Consul 集群信息,并更新指定模板,生成配置文件。更新完成后,可以选择运行 shell 命令执行更新操作,如重新加载 Nginx。
Consul-Template 可以查询 Consul 中的服务目录、Key、Key-values 等,适合动态创建配置文件,如 Apache/Nginx Proxy Balancers、Haproxy Backends 等。
Consul-Template部署
一、准备 Nginx 模板文件
- 在 Consul 服务器上,创建 Nginx 模板文件
/opt/consul/nginx.ctmpl
。
#定义nginx upstream一个简单模板
upstream http_backend {
{
{range service "nginx"}}
server {
{.Address}}:{
{.Port}};
{
{end}}
}
#定义一个server,监听8000端口,反向代理到upstream
server {
listen 8000;
server_name localhost 192.168.80.15;
access_log /var/log/nginx/xy101.com-access.log;
index index.html index.php;
location / {
proxy_set_header HOST $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Client-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://http_backend;
}
}
二、编译安装 Nginx
- 安装依赖:
yum -y install pcre-devel zlib-devel gcc gcc-c++ make
- 创建 Nginx 用户:
useradd -M -s /sbin/nologin nginx
- 解压、编译、安装 Nginx:
tar zxvf nginx-1.12.0.tar.gz -C /opt/
cd /opt/nginx-1.12.0/
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx && make && make install
ln