第一种办法 端口映射
一 、背景信息
需求
consult server 8500 , 8600 启动时绑定127.0.0.1,无法对外访问。
2018/02/23 17:46:11 [INFO] agent: Started DNS server 127.0.0.1:8600 (tcp) 2018/02/23 17:46:11 [INFO] agent: Started HTTP server on 127.0.0.1:8500 (tcp)
网络结构
IP地址: 111.2.154.72 (根据实际情况变化)
源端口: 37170 (根据实际情况变化)
源端口: 8500
二 、安装rinetd
1、在服务器Linux上安装rinetd。
yum install -y gcc g++ autoconf make telnet wget http://www.boutell.com/rinetd/http/rinetd.tar.gztar -xvf rinetd.tar.gz cd rinetdsed -i 's/65536/65535/g' rinetd.c mkdir -pv /usr/man && make && make install
2、编辑配置文件。
vi /etc/rinetd.conf
3、在配置文件中输入如下内容:
0.0.0.0 37170 127.0.0.1 8500 logfile /var/log/rinetd.log
- 将所有发往本机37170端口的请求转发到127.0.0.1的8500端口。
命令格式
bindaddress bindport connectaddress connectport绑定的地址 绑定的端口 连接的地址 连接的端口
或
[Source Address] [Source Port] [Destination Address] [Destination Port]源地址 源端口 目的地址 目的端口
4、执行如下命令启动rinetd。
rinetd# 等价于 /usr/sbin/rinetd -c /etc/rinetd.conf
注意:通过echo rinetd >>/etc/rc.local可以设置为自启动。
5、查看端口状态
[root@VM_241_61_centos rinetd]# netstat -tlanp | grep 37170tcp 0 0 0.0.0.0:37170 0.0.0.0:* LISTEN 4081/rinetd tcp 0 0 10.104.241.61:37170 113.116.140.97:7373 ESTABLISHED 4081/rinetd tcp 0 0 10.104.241.61:37170 113.116.140.97:7374 ESTABLISHED 4081/rinetd tcp 0 0 10.104.241.61:37170 113.116.142.213:6888 ESTABLISHED 4081/rinetd
6、测试端口连通性
[root@VM_138_47_centos ~]# telnet 111.2.154.72 37170Trying 111.2.154.72...Connected to 111.2.154.72.Escape character is '^]'.
看到此信息,说明端口是连通的。
7、注意事项
1)rinetd.conf中绑定源端口号必须未被其它程序占用。
2)传统服务器运行rinetd iptables防火墙打开绑定的源端口。 3)阿里云ECS,腾讯CVM运行rinetd需要添加安全组规则、iptables防火墙打开绑定的源端口。三、验证测试
http://111.2.154.72:37170/ui/#/dc1/services
----------------------------------分隔线----------------------------------
第二种办法 Consul -client参数
Consul Server 启动参数 -client 0.0.0.0
启动 Consul Server
consul agent -server -bootstrap-expect 3 -data-dir /tmp/consul -node=s1 -bind=10.201.102.198 -ui-dir ./consul_ui/ -rejoin -config-dir=/etc/consul.d/ -client 0.0.0.0运行cosnul agent以
server
模式,
-server
: 定义agent运行在server模式
-bootstrap-expect
:在一个datacenter中期望提供的server节点数目,当该值提供的时候,consul一直等到达到指定sever数目的时候才会引导整个集群,该标记不能和bootstrap共用-bind
:该地址用来在集群内部的通讯,集群内的所有节点到地址都必须是可达的,默认是0.0.0.0-node
:节点在集群中的名称,在一个集群中必须是唯一的,默认是该节点的主机名-ui-dir
: 提供存放web ui资源的路径,该目录必须是可读的-rejoin
:使consul忽略先前的离开,在再次启动后仍旧尝试加入集群中。
-config-dir
::配置文件目录,里面所有以.json结尾的文件都会被加载-client
:consul服务侦听地址,这个地址提供HTTP、DNS、RPC等服务,默认是127.0.0.1所以不对外提供服务,如果你要对外提供服务改成0.0.0.0