qbanxiaoli / fastdfs

FastDFS+FastDHT(单机+集群版)
https://hub.docker.com/r/qbanxiaoli/fastdfs
Apache License 2.0
90 stars 48 forks source link

不同机器搭建集群 #9

Closed kaname-y closed 2 years ago

kaname-y commented 2 years ago

您好,我在两台云服务器上分别使用docker-compose启动,ip填写了两台机器的公网ip,内网ip也试过了。 在容器内部执行 fdfs_test /etc/fdfs/client.conf upload index.html 后出现如下错误:

[2021-11-30 14:11:35] ERROR - file: connection_pool.c, line: 130, connect to A服务器内网ip:22122 fail, errno: 110, error info: Operation timed out [2021-11-30 14:11:35] ERROR - file: tracker_proto.c, line: 48, server: B服务器内网ip:22122, response status 2 != 0 [2021-11-30 14:11:35] ERROR - file: ../client/tracker_client.c, line: 1085, fdfs_recv_response fail, result: 2 [2021-11-30 14:11:35] ERROR - file: tracker_proto.c, line: 48, server: A服务器内网ip:22122, response status 2 != 0 [2021-11-30 14:11:35] ERROR - file: ../client/tracker_client.c, line: 907, fdfs_recv_response fail, result: 2


docker-compose文件被我修改成如下:

version: '3' services: fastdfs: build: . image: ljb/fastdfs-cluster:v1.0

该容器是否需要开机启动+自动重启。若需要,则取消注释。

restart: always
container_name: fastdfs
ports:
  - "18888:80"
  - "22122:22122"
  - "23000:23000"
environment:
  # nginx服务端口,默认80端口,可修改
  WEB_PORT: 18888
  # tracker_server服务端口,默认22122端口,可修改
  FDFS_PORT: 22122
  # storage_server服务端口,默认23000端口,可修改
  STORAGE_PORT: 23000
  # fastdht服务端口,默认11411端口,可修改
  FDHT_PORT: 11411
  # docker所在的宿主机内网地址,默认使用eth0网卡的地址
  IP: A服务器内网ip,B服务器内网ip
  # 防盗链配置
  # 是否做token检查,缺省值为false
  CHECK_TOKEN: 0
  # 生成token的有效时长,默认900s
  TOKEN_TTL: 900
  # 生成token的密钥
  SECRET_KEY: FastDFS1234567890
  # token检查失败,返回的本地文件内容,可以通过文件挂载的方式进行修改
  TOKEN_CHECK_FAIL: /etc/fdfs/anti-steal.jpg
volumes:
  # 将本地目录映射到docker容器内的fastdfs数据存储目录,将fastdfs文件存储到主机上,以免每次重建docker容器,之前存储的文件就丢失了。
  -  dfs_data:/var/local
# 网络模式为host,可不暴露端口,即直接使用宿主机的网络端口,只适用于linux系统

network_mode: host

volumes: dfs_data: {}


希望您可以指点一下,谢谢

qbanxiaoli commented 2 years ago

两台云服务器内网能互通吗?看起来22122端口连不上?

kebukeYi commented 2 years ago

您好,我在一台阿里云服务器上 利用docker 执行 [docker pull qbanxiaoli/fastdfs] 拉取最新版本后 执行 [docker run -d --restart=always --net=host --name=fastdfs -e IP=公网IP -v /usr/fastdfs/data:/var/local qbanxiaoli/fastdfs] 在容器内部执行 fdfs_test /etc/fdfs/client.conf upload index.html 后出现如下错误: bash-5.0# fdfs_test /etc/fdfs/client.conf upload index.html This is FastDFS client test program v5.12

[2021-12-13 12:33:28] DEBUG - base_path=/var/local/fdfs/storage, connect_timeout=30, network_timeout=60, tracker_server_count=1, anti_steal_token=0, anti_steal_secret_key length=0, use_connection_pool=0, g_connection_pool_max_idle_time=3600s, use_storage_id=0, storage server id count: 0

tracker_query_storage_store_list_without_group: server 1. group_name=, ip_addr=公网IP, port=23000 group_name=group1, ip_addr=公网IP, port=23000 [2021-12-13 12:33:28] ERROR - file: tracker_proto.c, line: 48, server: 公网IP:23000, response status 2 != 0 [2021-12-13 12:33:28] ERROR - file: ../client/storage_client.c, line: 996, fdfs_recv_response fail, result: 2

这会是什么原因? 我阿里云服务器上已经关闭了防火墙、并开启了 23000、22122、11411 三个端口,还是报这样的错误,我不知道是哪里出了问题。

上述问题是在公网IP下 不能完成测试的, 假如 我以 内网IP 执行 [docker run -d --restart=always --net=host --name=fastdfs -e IP=内网IP -v /usr/fastdfs/data:/var/local qbanxiaoli/fastdfs] 在容器内部执行 fdfs_test /etc/fdfs/client.conf upload index.html 后没有出现错误,并且也返回了访问URL,我也在阿里云服务器上 curl URL 是可以返回值的,但是这样我觉得不能算成功,我需要能外网能访问,所以也是失败。

请有空指点一二。

qbanxiaoli commented 2 years ago

不支持公网IP,要用公网IP需要把fastdht的安装内容去掉

kebukeYi commented 2 years ago

我先是把DockerFile 中有关 fdht 的所有有关的字眼 都删除了,然后更改docker-compose-linux.yml 文件中的IP ,我也设置成 内网IP了,随后执行 【docker-compose -f docker-compose-linux.yml up -d】 后 ,最后的错误是 【 libtool: compile: cc -c -I. -I../src -D_GNU_SOURCE -D_REENTRANT -O3 ../src/fileops/fileops_auto.c -o fileops_auto.o >/dev/null 2>&1 ./libtool --mode=compile cc -c -I. -I../src -D_GNU_SOURCE -D_REENTRANT -O3 ../src/fileops/fop_basic.c libtool: compile: cc -c -I. -I../src -D_GNU_SOURCE -D_REENTRANT -O3 ../src/fileops/fop_basic.c -fPIC -DPIC -o .libs/fop_basic.o In file included from ./db_int.h:50, from ../src/fileops/fop_basic.c:11: /usr/include/sys/poll.h:1:2: warning: #warning redirecting incorrect #include <sys/poll.h> to [-Wcpp] 1 | #warning redirecting incorrect #include <sys/poll.h> to | ^~~ 】不停的循环报这个警告,我真是55555555555

qbanxiaoli commented 2 years ago

警告不影响,镜像构建可能需要几分钟

qbanxiaoli commented 2 years ago

berkeley db也去掉

colin354 commented 9 months ago

您好,我在两台云服务器上分别使用docker-compose启动,ip填写了两台机器的公网ip,内网ip也试过了。 在容器内部执行 fdfs_test /etc/fdfs/client.conf upload index.html 后出现如下错误:

[2021-11-30 14:11:35] ERROR - file: connection_pool.c, line: 130, connect to A服务器内网ip:22122 fail, errno: 110, error info: Operation timed out [2021-11-30 14:11:35] ERROR - file: tracker_proto.c, line: 48, server: B服务器内网ip:22122, response status 2 != 0 [2021-11-30 14:11:35] ERROR - file: ../client/tracker_client.c, line: 1085, fdfs_recv_response fail, result: 2 [2021-11-30 14:11:35] ERROR - file: tracker_proto.c, line: 48, server: A服务器内网ip:22122, response status 2 != 0 [2021-11-30 14:11:35] ERROR - file: ../client/tracker_client.c, line: 907, fdfs_recv_response fail, result: 2

docker-compose文件被我修改成如下:

version: '3' services: fastdfs: build: . image: ljb/fastdfs-cluster:v1.0 # 该容器是否需要开机启动+自动重启。若需要,则取消注释。 restart: always container_name: fastdfs ports: - "18888:80" - "22122:22122" - "23000:23000" environment: # nginx服务端口,默认80端口,可修改 WEB_PORT: 18888 # tracker_server服务端口,默认22122端口,可修改 FDFS_PORT: 22122 # storage_server服务端口,默认23000端口,可修改 STORAGE_PORT: 23000 # fastdht服务端口,默认11411端口,可修改 FDHT_PORT: 11411 # docker所在的宿主机内网地址,默认使用eth0网卡的地址 IP: A服务器内网ip,B服务器内网ip # 防盗链配置 # 是否做token检查,缺省值为false CHECK_TOKEN: 0 # 生成token的有效时长,默认900s TOKEN_TTL: 900 # 生成token的密钥 SECRET_KEY: FastDFS1234567890 # token检查失败,返回的本地文件内容,可以通过文件挂载的方式进行修改 TOKEN_CHECK_FAIL: /etc/fdfs/anti-steal.jpg volumes: # 将本地目录映射到docker容器内的fastdfs数据存储目录,将fastdfs文件存储到主机上,以免每次重建docker容器,之前存储的文件就丢失了。 - dfs_data:/var/local # 网络模式为host,可不暴露端口,即直接使用宿主机的网络端口,只适用于linux系统

network_mode: host

volumes: dfs_data: {}

希望您可以指点一下,谢谢

您好,我也遇到了相同的问题,请问最后解决了么?