qbanxiaoli / fastdfs Goto Github PK
View Code? Open in Web Editor NEWFastDFS+FastDHT(单机+集群版)
Home Page: https://hub.docker.com/r/qbanxiaoli/fastdfs
License: Apache License 2.0
FastDFS+FastDHT(单机+集群版)
Home Page: https://hub.docker.com/r/qbanxiaoli/fastdfs
License: Apache License 2.0
如题:
现在是默认的group1
是否考虑一个新的环境变量,可以替换fastdfs中的group_name
在使用时,指定。
例如:
-e GROUP_NAME=group1/group2/...
问题1.
linux环境下使用启动命令
docker run -d --restart=always --net=host --name=toolFastdfs -e IP=<公网ip> -e WEB_PORT=81 -v /home/ubuntu/docker-v/toolFastdfs:/var/local qbanxiaoli/fastdfs
在使用公网ip时fdht日志会有一条报错 ERROR - file: func.c, line: 332, local host does not belong to any group, program exit!(内网ip没有问题)
问题2.
参数--net=host在mac与win环境下无法使用,请问可以用什么代替
com.github.tobato.fastdfs.exception.FdfsConnectException: 无法获取服务端连接资源:can't create connection to/172.18.0.1:23000
at com.github.tobato.fastdfs.domain.conn.DefaultConnection.(DefaultConnection.java:56)
at com.github.tobato.fastdfs.domain.conn.PooledConnectionFactory.create(PooledConnectionFactory.java:56)
at com.github.tobato.fastdfs.domain.conn.PooledConnectionFactory.create(PooledConnectionFactory.java:22)
at org.apache.commons.pool2.BaseKeyedPooledObjectFactory.makeObject(BaseKeyedPooledObjectFactory.java:60)
at org.apache.commons.pool2.impl.GenericKeyedObjectPool.create(GenericKeyedObjectPool.java:1041)
at org.apache.commons.pool2.impl.GenericKeyedObjectPool.borrowObject(GenericKeyedObjectPool.java:342)
at org.apache.commons.pool2.impl.GenericKeyedObjectPool.borrowObject(GenericKeyedObjectPool.java:265)
at com.github.tobato.fastdfs.domain.conn.ConnectionManager.getConnection(ConnectionManager.java:148)
at com.github.tobato.fastdfs.domain.conn.ConnectionManager.executeFdfsCmd(ConnectionManager.java:63)
at com.github.tobato.fastdfs.service.DefaultFastFileStorageClient.uploadFileAndMetaData(DefaultFastFileStorageClient.java:223)
at com.github.tobato.fastdfs.service.DefaultFastFileStorageClient.uploadImage(DefaultFastFileStorageClient.java:145)
at com.github.tobato.fastdfs.service.DefaultFastFileStorageClient.uploadImageAndCrtThumbImage(DefaultFastFileStorageClient.java:92)
at com.springboot.cloud.sysadmin.organization.util.FDFSUtils.upload(FDFSUtils.java:30)
at com.springboot.cloud.sysadmin.organization.rest.FileController.uploadFile(FileController.java:30)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:189)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:102)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:892)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:797)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1038)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:942)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1005)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:908)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:660)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:882)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at com.alibaba.druid.support.http.WebStatFilter.doFilter(WebStatFilter.java:123)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.boot.actuate.web.trace.servlet.HttpTraceFilter.doFilterInternal(HttpTraceFilter.java:90)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:92)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:93)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.cloud.sleuth.instrument.web.ExceptionLoggingFilter.doFilter(ExceptionLoggingFilter.java:50)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at brave.servlet.TracingFilter.doFilter(TracingFilter.java:86)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.filterAndRecordMetrics(WebMvcMetricsFilter.java:117)
at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:106)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:200)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at com.alibaba.csp.sentinel.adapter.servlet.CommonFilter.doFilter(CommonFilter.java:91)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:200)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:490)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:408)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:834)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1415)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:748)
ERROR - file: func.c, line: 332, local host does not belong to any group, program exit!
docker启动后 查看 fdhtd 日志报错如上。
fdht_servers.conf 配置如下
group_count = 1 group0=xx.xx.xx.xx:11411
ip地址是外网地址
您好,我在两台云服务器上分别使用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系统
volumes:
dfs_data: {}
希望您可以指点一下,谢谢
IP=ifconfig eth0 | grep inet | awk '{print \$2}'| awk -F: '{print \$2}'
; \n
应该是 "\`", 需要转义。是在 docker run 获取 ip,二不是在 docker build 获取 ip
IP=`ifconfig eth0 | grep inet | awk '{print $2}'| awk -F: '{print $2}'`; \n\
vi /usr/local/nginx/confnginx.conf
修改http.server 的listen为别的端口
关闭容器重启容器会恢复到80
配置 /etc/fdfs/http.conf 中的 http.anti_steal.check_token=true配置重启nginx后访问卡死
docker镜像启动成功后,
docker exec -it fastdfs /bin/bash
echo "Hello FastDFS!">index.html
fdfs_test /etc/fdfs/client.conf upload index.html 执行这一行时报错 ERROR - file: connection_pool.c, line: 130, connect to 192.168.50.179(这是我当前机器的ip地址 ):22122 fail, errno: 111, error info: Connection refused ;如果我镜像启动时不指定ip 也会报相同的错误
这个怎么解决?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.