我有两个服务器(CentOS8)。
在zabbixfrontend).上,我有mysql-server容器,在server2上,我有zabbix-前端,即zabbix-web-apache-mysql (容器名为server1 )。我正在尝试从zabbix前端容器连接到mysql服务器。获取误差
bash-4.4$ mysql -h <MYSQL_SERVER_IP> -P 3306 -uroot -p
Enter password:
ERROR 2002 (HY000): Can't connect to MySQL server on '<MYSQL_SERVER_IP>' (115)当我从zabbix前端容器到mysql服务器IP执行nc时,我会得到“无主机路由”。错误信息。
bash-4.4$ nc -zv <MYSQL_SERVER_IP> 3306
Ncat: Version 7.70 ( https://nmap.org/ncat )
Ncat: No route to host.注意:我正在成功地从主机(server2) mysql-服务器容器中执行nc操作。
docker-compose.yml
version: '3.5'
services:
zabbix-web-apache-mysql:
image: zabbix/zabbix-web-apache-mysql:centos-8.0-latest
container_name: zabbixfrontend
#network_mode: host
ports:
- "80:8080"
- "443:8443"
volumes:
- /etc/localtime:/etc/localtime:ro
- /etc/timezone:/etc/timezone:ro
- ./zbx_env/etc/ssl/apache2:/etc/ssl/apache2:ro
- ./usr/share/zabbix/:/usr/share/zabbix/
env_file:
- .env_db_mysql
- .env_web
secrets:
- MYSQL_USER
- MYSQL_PASSWORD
- MYSQL_ROOT_PASSWORD
# zbx_net_frontend:
sysctls:
- net.core.somaxconn=65535
secrets:
MYSQL_USER:
file: ./.MYSQL_USER
MYSQL_PASSWORD:
file: ./.MYSQL_PASSWORD
MYSQL_ROOT_PASSWORD:
file: ./.MYSQL_ROOT_PASSWORDdocker logs zabbixfrontend如下所示
** Deploying Zabbix web-interface (Apache) with MySQL database
** Using MYSQL_USER variable from ENV
** Using MYSQL_PASSWORD variable from ENV
********************
* DB_SERVER_HOST: <MYSQL_SERVER_IP>
* DB_SERVER_PORT: 3306
* DB_SERVER_DBNAME: zabbix
********************
**** MySQL server is not available. Waiting 5 seconds...
**** MySQL server is not available. Waiting 5 seconds...
**** MySQL server is not available. Waiting 5 seconds...
**** MySQL server is not available. Waiting 5 seconds...
**** MySQL server is not available. Waiting 5 seconds...
**** MySQL server is not available. Waiting 5 seconds...
**** MySQL server is not available. Waiting 5 seconds...
**** MySQL server is not available. Waiting 5 seconds...发布于 2020-08-08 14:39:57
nc消息说的是实话:没有到主机的路线。
这是因为当您在码头bridge网络中部署前端容器时,它的IP地址属于172.18.0.0/16子网,而您的a试图通过属于不同子网的IP地址(10.0.0.0/16)到达数据库。
另一方面,当您在host网络上部署前端容器时,您不再面临这个问题,因为现在IP实际上正在使用主机的IP地址10.0.0.2,并且不需要显式创建路由以达到10.0.0.3。
现在,您面临的问题是您不能再通过浏览器访问web。之所以会出现这种情况,是因为我假设您将ports:"选项保留在docker-compose.yml中,并尝试在localhost:80/443上访问服务。如果在主机网络上运行容器,则不需要指定源端口和目标端口。容器将直接侦听容器内打开的端口上的主机。
尝试使用此配置运行前端容器,然后在localhost:8080和localhost:8443上访问它。
...
network_mode: host
# ports:
# - "80:8080"
# - "443:8443"
volumes:
...在主机网络上运行容器不是我通常推荐的事情,因此您的设置非常特殊,一个容器在一个码头主机上运行,另一个容器在另一个独立的码头主机上运行,我想您不希望创建一个覆盖网络,并最终将两个码头主机注册为一个群集。
https://stackoverflow.com/questions/63306290
复制相似问题