Mesos集群中实现Consul服务发现方案
利用consul可以在mesos集群中实现服务发现的方案。mesos是一个资源管理系统,可以部署应用,但是没有提供一个注册服务并提供服务发现的方案,所以本文利用consul实现mesos集群的服务发现实现。
Consul在mesos集群中充当的是一个primary DNS,给mesos集群的每个主机和上面运行的容器充当DNS server。
Consul有两种模式,server模式和client模式。可以在所有的mesos master 节点安装Consul的server模式(当然也可以不用安装在master节点,可以单独安装),但是必须在mesos agent 节点安装Consul的client模式,因为所有的应用容器都是运行在mesos agent节点上,为了让容器都能以Consul作为DNS server,所以必须在mesos agent节点上安装consul的client模式。
部署consul集群
下载consul,https://www.consul.io/downloads.html
下载了consul_0.9.3_linux_amd64.zip, unzip到/usr/bin/consul
配置consul
在每个consul节点上配置:
$ mkdir -p /etc/consul.d/bootstrap
$ mkdir -p /etc/consul.d/server
$ mkdir -p /etc/consul.d/client
在其中一个mesos master节点上配置bootstrap配置,该节点就是consul集群中的bootstrap节点。
$ cat > /etc/consul.d/bootstrap/config.json <<EOF
{
"bootstrap": true,
"server": true,
"datacenter": "dc",
"data_dir": "/var/consul",
"log_level": "INFO",
"enable_syslog": true,
"disable_update_check": true,
"ui": true
}
EOF
在其他的mesos master 节点上配置server配置,这些节点就是consul集群中的server节点。
$ cat > /etc/consul.d/server/config.json <<EOF
{
"bootstrap": false,
"server": true,
"datacenter": "dc",
"data_dir": "/var/consul",
"log_level": "INFO",
"enable_syslog": true,