fastdfs單主機配置多個storage 第二版
問題1
1.是配置/root/soft/fastdfs-nginx-module/src/mod_fastdfs.conf 還是/etc/fdfs/mod_fastdfs.conf下面的?
2.多個組,必須以group1,group2命名
3.尤其storage的nginx啟動一定要看啟動日誌,最多的配置問題會出現在這裏
fdfs註意事項
附錄:
在整個環境搭建過程中遇到一些問題,在此提交分享,供大家參考。
1、 在Storage服務器上啟動Nginx時出現 ERROR - file: /home/hadoop/dev/fastdfs/fastdfs-nginx-module/src/common.c, line: 103, section: group1, you must set parameter: group_name!
問題原因:在配置mod_fastdfs.conf文件時要保證group_count=2的個數與下面配置的[group*]個數相一致。
2、 安裝GraphicsMagick進行配置時出現錯誤 configure: error: libltdl is required by modules build 問題原因:沒有安裝libltdl,通過yum install
-ylibtoollibtool-devel安裝後再重新
3、 java客戶端上傳文件時出現錯誤 recvcmd: 100 is not correct, expect cmd: 10
問題原因:版本問題,下載1.24版本的即可。
4、 通過瀏覽器方式縮略圖是出現
gm convert: Request did not return an image.錯誤。
問題原因:沒有安裝libjpeg和libpng包,導致在GM處理圖時出現錯誤。安裝libjpeg和libpng後重新安裝GraphicsMagick即可。
5、 安裝FastDFS在 編譯時出現
/usr/local/lib/libfastcommon.so: undefined reference
to sqrt‘ /usr/local/lib/libfastcommon.so: undefined reference
tocos‘錯誤
問題原因:libfastcommon版本的問題,下載舊版本,重新安裝,然後在編譯FastDFS即可。
6.這樣先證明了這個fastdfs的group4新目錄裏面的圖片是可以被訪問的,然後再讓開發人員在調用組件上傳突破的時候,將調用url裏面的group1變成group4即可。
7.ntpdate asia.pool.ntp.org
配置文件與軟件版本
trackerd
cat mod_fastdfs.conf
#include http.conf
connect_timeout=2
network_timeout=30
storage_sync_file_max_delay = 86400
tracker_server=172.16.30.227:22122
load_fdfs_parameters_from_tracker=true
log_level=info
log_filename=/var/log/mod.log
url_have_group_name=true
response_mode=redirect
if_alias_prefix=
flv_support = true
flv_extension = flv
group_count = 3
[group1]
group_name=group1
storage_server_port=23000
store_path_count=1
store_path0=/opt/fastdfsdata/storage
#base_path=/opt/fastdfsdata/fastdfs_nginx
[group2]
group_name=secret
storage_server_port=23001
store_path_count=1
store_path0=/opt/fastdfsdata/secret
[group3]
group_name=public
storage_server_port=23002
store_path_count=1
store_path0=/opt/fastdfsdata/public
[root@localhost fdfs]# cat /etc/fdfs/tracker.conf
disabled=false
bind_addr=172.16.30.227
port=22122
connect_timeout=90
network_timeout=90
base_path=/opt/fastdfsdata/tracker
max_connections=256
accept_threads=4
work_threads=4
store_lookup=2
#store_group=group1
store_group=0
store_server=0
store_path=0
download_server=0
reserved_storage_space = 10%
log_level=info
run_by_group=
run_by_user=
allow_hosts=*
sync_log_buff_interval = 10
check_active_interval = 120
thread_stack_size = 64KB
storage_ip_changed_auto_adjust = true
storage_sync_file_max_delay = 86400
storage_sync_file_max_time = 300
use_trunk_file = false
slot_min_size = 256
slot_max_size = 16MB
trunk_file_size = 64MB
trunk_create_file_advance = false
trunk_create_file_time_base = 02:00
trunk_create_file_interval = 86400
trunk_create_file_space_threshold = 20G
trunk_init_check_occupying = false
trunk_init_reload_from_binlog = false
trunk_compress_binlog_min_interval = 0
use_storage_id = false
storage_ids_filename = storage_ids.conf
id_type_in_filename = ip
store_slave_file_use_link = false
rotate_error_log = false
error_log_rotate_time=00:00
rotate_error_log_size = 0
log_file_keep_days = 0
use_connection_pool = false
connection_pool_max_idle_time = 3600
http.server_port=80
http.check_alive_interval=90
http.check_alive_type=tcp
http.check_alive_uri=/status.html
nginx
[root@localhost conf]# cat nginx.conf
user root;
worker_processes 4;
error_log logs/error.log info;
pid logs/nginx.pid;
events {
worker_connections 1024;
use epoll;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
tcp_nopush on;
keepalive_timeout 65;
server_names_hash_bucket_size 128;
client_header_buffer_size 32k;
large_client_header_buffers 4 32k;
client_max_body_size 300m;
proxy_redirect off;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 16k;
proxy_buffers 4 64k;
proxy_busy_buffers_size 128k;
proxy_temp_file_write_size 128k;
upstream fdfs_group2 {
server 172.16.30.228:80 weight=1 max_fails=2 fail_timeout=60s;
}
upstream secret {
server 172.16.30.228:8081 weight=1 max_fails=2 fail_timeout=60s;
}
upstream public {
server 172.16.30.228:8082 weight=1 max_fails=2 fail_timeout=60s;
}
log_format main ‘$remote_addr - $remote_user [$time_local] "$request" ‘
‘$status $body_bytes_sent "$http_referer" ‘
‘"$http_user_agent" "$http_x_forwarded_for"‘;
server {
listen 80;
server_name 192.168.1.227;
access_log logs/host.access.log main;
location ~ /group1/ {
if ($arg_attname ~ "^(.*).*") {
add_header Content-Disposition "attachment;filename=$arg_attname";
}
proxy_next_upstream http_502 http_504 error timeout invalid_header;
proxy_pass http://fdfs_group2;
}
location ~ /secret/ {
if ($arg_attname ~ "^(.*).*") {
add_header Content-Disposition "attachment;filename=$arg_attname";
}
proxy_next_upstream http_502 http_504 error timeout invalid_header;
proxy_pass http://secret;
}
location ~ /public/ {
if ($arg_attname ~ "^(.*).*") {
add_header Content-Disposition "attachment;filename=$arg_attname";
}
proxy_next_upstream http_502 http_504 error timeout invalid_header;
proxy_pass http://public;
}
}
}
/usr/local/bin/fdfs_storaged /etc/fdfs/public.conf
cat /etc/fdfs/public.conf
disabled=false
group_name=public
bind_addr=172.16.30.228
client_bind=true
port=23002
connect_timeout=90
network_timeout=90
heart_beat_interval=90
stat_report_interval=60
base_path=/opt/fastdfsdata/public
max_connections=256
buff_size = 256KB
accept_threads=1
work_threads=4
disk_rw_separated = true
disk_reader_threads = 1
disk_writer_threads = 1
sync_wait_msec=50
sync_interval=0
sync_start_time=00:00
sync_end_time=23:59
write_mark_file_freq=500
store_path_count=1
store_path0=/opt/fastdfsdata/public
subdir_count_per_path=256
tracker_server=172.16.30.227:22122
log_level=info
run_by_group=
run_by_user=
allow_hosts=*
file_distribute_path_mode=0
file_distribute_rotate_count=100
fsync_after_written_bytes=0
sync_log_buff_interval=10
sync_binlog_buff_interval=10
sync_stat_file_interval=300
thread_stack_size=512KB
upload_priority=10
if_alias_prefix=
check_file_duplicate=0
file_signature_method=hash
key_namespace=FastDFS
keep_alive=0
use_access_log = false
rotate_access_log = false
access_log_rotate_time=00:00
rotate_error_log = false
error_log_rotate_time=00:00
rotate_access_log_size = 0
rotate_error_log_size = 0
log_file_keep_days = 0
file_sync_skip_invalid_record=false
use_connection_pool = false
connection_pool_max_idle_time = 3600
http.domain_name=
http.server_port=8082
[root@localhost fdfs]# cat mod_fastdfs.conf
#include http.conf
connect_timeout=2
network_timeout=30
storage_sync_file_max_delay = 86400
tracker_server=172.16.30.227:22122
load_fdfs_parameters_from_tracker=true
log_level=info
log_filename=/var/log/mod.log
url_have_group_name=true
response_mode=redirect
if_alias_prefix=
flv_support = true
flv_extension = flv
group_count = 3
[group1]
group_name=group1
storage_server_port=23000
store_path_count=1
store_path0=/opt/fastdfsdata/storage
#base_path=/opt/fastdfsdata/fastdfs_nginx
[group2]
group_name=secret
storage_server_port=23001
store_path_count=1
store_path0=/opt/fastdfsdata/secret
[group3]
group_name=public
storage_server_port=23002
store_path_count=1
store_path0=/opt/fastdfsdata/public
nginx
[root@localhost conf]# cat nginx.conf
user root;
worker_processes 1;
#error_log logs/error.log;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
log_format main ‘$remote_addr - $remote_user [$time_local] "$request" ‘
‘$status $body_bytes_sent "$http_referer" ‘
‘"$http_user_agent" "$http_x_forwarded_for"‘;
#access_log logs/access.log main;
sendfile on;
keepalive_timeout 65;
include ./conf.d/*.conf;
}
[root@localhost conf]# cat conf.d/public.conf
server {
listen 8082;
server_name 172.16.30.228;
access_log logs/public.log;
error_log logs/public.err;
location ~/public/M00 {
root /opt/fastdfsdata/public/data;
ngx_fastdfs_module;
}
}
fastdfs單主機配置多個storage 第二版