我试图设置Consul和Bind9在本地公开MySql作为服务。 我遵循这些步骤
安装MySql
$ sudo apt-get update
$ sudo apt-get install mysql-server
安装解压缩和Nginx
$ sudo apt-get update
$ sudo apt-get install unzip
$ sudo apt-get install nginx
安装领事
$ cd / usr / local / bin
$ sudo wget https://releases.hashicorp.com/consul/0.9.2/consul_0.9.2_linux_amd64.zip
$ sudo unzip consul_0.9.2_linux_amd64.zip
$ sudo rm -rf consul_0.9.2_linux_amd64.zip
安装Consul服务器为MySql
$ cd〜
$ mkdir -p consul-config / server
$ vim consul-config / server / config.json
{“services”:[{“id”:“mydatabase-3306”,“name”:“mydatabase”,“tags”:[“mysql”],“port”:3306}]}
为Consul设置Nginx
$ sudo vim /etc/nginx/conf.d/consul.conf
服务器{听80; server_name 192.168.1.121; root / home / agusgambina / consul-server; 位置/ {proxy_pass http://127.0.0.1:8500 ; proxy_set_header X-Real-IP $ remote_addr; proxy_set_header主机$ http_host; }}
$ sudo systemctl restart nginx.service
安装并设置Bind9
$ sudo apt-get update
$ sudo apt-get install bind9 bind9utils bind9-doc
启用IPv4模式
$ sudo systemctl edit --full bind9 /etc/systemd/systemd/bind9.service . . . [Service] ExecStart=/usr/sbin/named -f -u bind -4 ... $ sudo vim /etc/bind/named.conf options { directory "/var/cache/bind"; recursion yes; allow-query { localhost; }; forwarders { 8.8.8.8; 8.8.4.4; }; dnssec-enable no; dnssec-validation no; auth-nxdomain no; listen-on-v6 { any; }; # conform to RFC1035 }; include "/etc/bind/consul.conf"; include "/etc/bind/named.conf.options"; include "/etc/bind/named.conf.local"; include "/etc/bind/named.conf.default-zones"; $ sudo vim /etc/bind/consul.conf zone "consul" IN { type forward; forward only; forwarders { 127.0.0.1 port 8600; }; }; $ sudo systemctl daemon-reload $ sudo systemctl restart bind9
开始领事
$ consul agent -dev -config-dir = / home / agusgambina / consul-config / server /
执行上面的行后,我可以去http:// localhost:8500 ,我看到Consul和MySql服务正在运行
如果我连接到本地主机,我能够做到这一点
$ mysql -u root -p -h localhost
但是,当我尝试连接到mydatabase.service.consul我收到此错误信息
> ERROR 2005 (HY000): Unknown MySQL server host 'mydatabase.service.consul' (0)