前几天的安装了一台tfs,今天上午的时候刚刚到了机房。今天这里就给大家介绍下tfs的如何进行配置并启动。
淘宝分布式文件系统有2个节点,NameServer负责Block的创建,删除,复制,均衡,整理,NameServer不负责实际数据的读写,实际数据的读写由!DataServer完成。DataServer主要的功能是的:负责实际数据的存储和读写,
先将给大家看看我线上环境的配置。
1.nameserver
[root@kw-tfs1 conf]# pwd
/usr/local/tfs228/tfs_bin/conf
[root@kw-tfs1 conf]#
[root@kw-tfs1 conf]# pwd
/usr/local/tfs228/tfs_bin/conf
[root@kw-tfs1 conf]# cat ns.conf
[public]
#log file size default 1GB
log_size=1073741824 #默认log文件超过1G会转存
#log file num default 64
log_num = 15 #保存的日志个数
#log file level default debug
log_level=info #日志级别
#main queue size default 10240
task_max_queue_size = 10240 #工作队列
#listen port
port = 18108 #使用的端口 默认8108 建议修改
#work directoy
work_dir=/data/tfs_workdir # 工作目录 日志会在这下面产生
#device name (vip device)
dev_name=eth0 # ns服务ip所在的设备名字
#work thread count default 4
thread_count = 4 #工作线程池
#ip addr(vip)
ip_addr = 192.168.1.150 #本机IP地址(vip),配置ha时为vip,没配置可以为主ns的ip,我们这里么有使用VIP,使用另外的方法实现
[nameserver]
safe_mode_time = 300 #系统保护时间 保护时间不做任务操作
#nameserver IP地址列表(master, salve的ip地址,只能以'|'分隔)
#单台nameserver时,另一个ip配置为无效ip即可
ip_addr_list = 192.168.1.150|192.168.1.152 #这里150是我们主的IP,152是我们slave的ip
group_mask = 255.255.255.255
block_max_size = 62914560 #Block size的最大值
max_replication = 2 #block的最大副本 单台ds的时候请设置为1
min_replication = 1 #已经没在使用了
# use capacity ratio
use_capacity_ratio = 98 # dataserver 容量使用的百分比
# block use ratio
block_max_use_ratio = 98 #块容量使用的百分比
#heart interval time(seconds)
heart_interval = 2 # dataserver和nameserver之间的心跳时间
# object dead max time(seconds) default
object_dead_max_time = 300 # object死亡的最大时间
#compact hour range (def 2~6)
compact_hour_range=2~6
# cluster id defalut 1
cluster_id = 1 #集群号
# block lost, replicate ratio
replicate_ratio_ = 50 # Block当前备份数与最大备份数百分比,如果大于这个百分比,就开始复制
max_write_filecount = 100 #每个DataServer 主可写块的大小, default: 3
heart_thread_count = 2 #dataserver 与 nameserver 的心跳线程池的大小, default: 2
heart_max_queue_size = 10 #dataserver 与 nameserver 的心跳工作队列的大小, default: 10
repl_wait_time = 1800 #block 缺失备份时, 需要等待多长时间才进行复制, 单位(秒), default: 240
compact_delete_ratio = 15 #block进行压缩的比例, block 删除的文件的比例达到这个值时进行压缩
compact_max_load = 200 #block进行压缩时, dataserver的最大负载,超出这个值dataserver,不进行压缩
object_clear_max_time = 300 # object 清理的时间, 单位(秒), default: 300
#not use
max_wait_write_lease = 15 #nameserver上出现租约等待时, 阻塞线程最大个数, 这个值最好是工作线程的一半
#not use
lease_expired_time = 3 #租约删除的最长时间, 单位(小时), default: 1
#not use
max_lease_timeout = 30000
#not use
cleanup_lease_threshold = 102400 #清理租约的阀值, default: 102400
#not use
build_plan_interval = 10 #创建计划的间隔时间, 单位(秒), default: 30
#not use
run_plan_expire_interval = 120 #计划超时时间, 单位(秒), default: 120
#not use
build_plan_ratio = 25 #创建计划的百分比, 计划数量 = dataserver 数量 * build_plan_ratio
dump_stat_info_interval = 60000000 #定时dump统计信息的间隔时间, 单位(微秒), default: 60000000
#not use
build_plan_default_wait_time = 2 #创建计划等待时间, 主要用有很多紧急复制时,单位(秒), default: 2
#not use
balance_max_diff_block_num = 5 #负载均衡时block相关的个数, default: 5
add_primary_block_count = 3 #每次新增Block的个数, default: 3
block_chunk_num = 32 #存储block桶的个数, default: 32
#not use
task_percent_sec_size = 200 #每个任务处理的预期时间, 单位(微秒), default: 200
task_max_queue_size = 10000
oplog_sync_max_slots_num = 1024 #同步日志缓冲区slot的大小, 超出这个值会写入磁盘, default: 1
oplog_sync_thread_num = 1
上面就是我线上ns的配置的文件,其中标红的地方被我修改了。如果你们是和我一样安装的2.28版本的同样修改上面的配置就能直接使用了。
启动ns mkdir /data/tfs_workdir /usr/local/tfs228/tfs_bin/scripts/tfs start_ns #停止的话使用stop_ns netstat -nltp |grep nameserver
从上面可以看到的 监听的ip和端口是的0.0.0.0和8108, ns配置文件中不管ip写的是内网还是外网的情况下都是监听0.0.0.0,所以我们还需要借助额外的iptables来增加安全性
iptables -A INPUT -s 192.168.1.0/24 -j ACCEPT #让我们自己机房能够正常访问 iptables -A INPUT -s 0.0.0.0/0 -p tcp -m tcp --dport 8108 -j DROP #禁掉8108端口的访问
我这边线上的防火如下 :
iptables -X iptables -F #限制我们2个机房进出的网速的 iptables -A INPUT -s 192.168.2.0/24 -m limit --limit 1500/s --limit-burst 100 -j ACCEPT iptables -A INPUT -s 192.168.3.0/24 -j DROP iptables -A OUTPUT -d 192.168.2.0/24 -m limit --limit 1500/s --limit-burst 100 -j ACCEPT iptables -A OUTPUT -d 192.168.3.0/24 -j DROP #允许2个ip的的访问 iptables -A INPUT -s 192.168.2.0/24 -j ACCEPT iptables -A INPUT -s 192.168.3.0/24 -j ACCEPT #禁用其他ip访问的 9998-10011(我们ds使用端口)端口和8108(ns) 为了节约成本我这边将ns和ds安装在一起了,后续会分开 iptables -A INPUT -s 0.0.0.0/0 -p tcp -m tcp --dport 9998:10011 -j DROP iptables -A INPUT -s 0.0.0.0/0 -p tcp -m tcp --dport 8108 -j DROP
2.dataserver
[root@kw-tfs1 conf]# cat ds.conf
[public]
#log file size default 1GB
log_size=1073741824
#log file num default 64
log_num = 7
#log file level default debug
log_level=info
#main queue size default 10240
task_max_queue_size = 10240
#listen port
port = 9998 # dataserver端口号从哪里开始
#work directoy
work_dir=/data/tfs_workdir #工作目录
#device name
dev_name= eth0 #绑定ds的网络设备
#work thread count default 4
thread_count = 4
#ip addr
ip_addr = 192.168.2.3 #本机ds的ip
[dataserver]
#nameserver ip addr(vip)
ip_addr = 192.168.1.150 #ns的vip 没有就写主nsip,我这里就是主ns地址
ip_addr_list = 192.168.1.150|192.168.1.152 #主和备的ns地址没有备的就随便写一个ip
#nameserver port
port = 8108 #ns的端口号
#slave_nsip = 192.168.0.2
slave_nsip = 183.60.41.3:8108 #slave tfs机器的地址 (第二套tfs集群,我们这个已经下线了)
#heart interval time(seconds)
heart_interval = 2
check_interval = 2
replicate_threadcount = 2
dump_visit_stat_interval = 60
backup_type = 1
#not used.
backup_path = /data/tfs_workdir/backup
max_data_file_nums = 100
#max_crc_error_nums = 4
#max_eio_error_nums_ = 6
#expire_checkblock_time = 86000
#max_cpu_usage = 60
#dump_stat_info_interval = 60000000
mount_name = /kbfs/db # mount路径 磁盘需要挂载到这里
mount_maxsize = 1854982720 #每个磁盘格式化的大小 这里使用的单盘2T参数
#mount_maxsize = 364996
base_filesystem_type = 1
superblock_reserve = 0
avg_file_size = 40960
mainblock_size = 67108864
extblock_size = 4194304
block_ratio = 1
hash_slot_ratio = 0.5
ds_thread_count = 4
这个就是我这边线上的dataserver参数了。
格式化的和启动ds
mkdir /data/tfs_workdir/backup -p mkdir /kbfs/db{1..7} #格式化磁盘挂载地址 ### 格式化7块磁盘(全新的)不是全新的,按照自己学习格式话就行了 mkfs.ext4 /dev/sdc <<END y END mkfs.ext4 /dev/sdd <<END y END mkfs.ext4 /dev/sde <<END y END mkfs.ext4 /dev/sdf <<END y END mkfs.ext4 /dev/sdg <<END y END mkfs.ext4 /dev/sdh <<END y END mkfs.ext4 /dev/sdb <<END y END cat >>/etc/fstab <<END /dev/sdb /kbfs/db1 ext4 defaults 0 0 /dev/sdc /kbfs/db2 ext4 defaults 0 0 /dev/sdd /kbfs/db3 ext4 defaults 0 0 /dev/sde /kbfs/db4 ext4 defaults 0 0 /dev/sdf /kbfs/db5 ext4 defaults 0 0 /dev/sdg /kbfs/db6 ext4 defaults 0 0 /dev/sdh /kbfs/db7 ext4 defaults 0 0 END mount -a #开始格式为tfs块文件 /usr/local/tfs228/tfs_bin/scripts/stfs format 1-7 #格式的1-7磁盘 清除使用clear /usr/local/tfs228/tfs_bin/scripts/tfs start_ds 1-7 #启动ds1-7 启动单个单个数字就好 e.g. /usr/local/tfs228/tfs_bin/scripts/tfs stop_ds 1-7 #停止的1-7 /usr/local/tfs228/tfs_bin/scripts/tfs stop_ds 4 #停止ds4 netstat -ntlp |grep dataserver
查看启动情况
最后看下我们线上使用的情况
好了今天给大家介绍的如何启动和淘宝分布式系统的ns和ds,下次我们来谈谈如何使用tfs系统存储小文件系统以及一些工具的介绍。
转载于:https://blog.51cto.com/youprince/1975967