2.淘寶分佈式文件系統基礎配置dataserver和nameserver介紹

  前幾天的安裝了一臺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

51d43c65f65ff62f7fc215c4e439a678.png-wh_

從上面可以看到的 監聽的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端口的訪問

我這邊線上的防火如下 :

ccfeb31d845035c153658f2e623b7552.png-wh_

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

1b79a47fdaab0d24e16799c50dd50fa0.png-wh_

查看啓動情況

826f306e8f860ac37cf44162b0f38ba2.png-wh_

最後看下我們線上使用的情況

0c6c2608c3897dd746135f66204fd413.png-wh_

好了今天給大家介紹的如何啓動和淘寶分佈式系統的ns和ds,下次我們來談談如何使用tfs系統存儲小文件系統以及一些工具的介紹。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章