歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux綜合 >> 學習Linux >> CentOS7安裝zookeeper

CentOS7安裝zookeeper

日期:2017/3/6 9:13:04   编辑:學習Linux

CentOS7安裝zookeeper


CentOS7安裝zookeeper


安裝

1.修改操作系統/etc/hosts,添加如下

zookeeper servers

192.168.104.102 zookeeper-01

2.官網下載地址:http://mirrors.hust.edu.cn/apache/zookeeper/

$ wget http://mirrors.hust.edu.cn/apache/zookeeper/

3. 解壓

$ tar -zxvf zookeeper-3.4.6.tar.gz

4. 創建數據和日志文件夾

$ cd /usr/local/zookeeper-3.4.6$ mkdir data$ mkdir logs

5. 將zookeeper目錄下conf下的zoo_sample.cfg拷貝一份,命名為zoo.cfg

$ cp zoo_sample.cfg zoo.cfg

6. 修改zoo.cfg配置文件

$ vi zoo.cfgtickTime=2000initLimit=10syncLimit=5dataDir=/usr/local/zookeeper/datadataLogDir=/usr/local/zookeeper/logsclientPort=2181//下面的ip也可以用hosts別名zookeeper-01server.1=192.168.104.156:2888:3888server.2=192.168.104.157:2888:3888//其中2888是zookeeper服務之間通信的端口//3888是zookeeper與其他應用程序通信端口

zoo.cfg參數說明

參數名說明clientPort客戶端連接server的端口,即對外服務端口,一般設置為2181吧tickTimeZK中的一個時間單元。ZK中所有時間都是以這個時間單元為基礎,進行整數倍配置的。例如,session的最小超時時間是2*tickTimedataDir存儲快照文件snapshot的目錄。默認情況下,事務日志也會存儲在這裡。建議同時配置參數dataLogDir, 事務日志的寫性能直接影響zk性能dataLogDir事務日志輸出目錄。盡量給事務日志的輸出配置單獨的磁盤或是掛載點,這將極大的提升ZK性能globalOutstandingLimit最大請求堆積數。默認是1000。ZK運行的時候, 盡管server已經沒有空閒來處理更多的客戶端請求了,但是還是允許客戶端將請求提交到服務器上來,以提高吞吐性能。當然,為了防止Server內存溢出,這個請求堆積數還是需要限制下的。(Java system property: zookeeper.globalOutstandingLimit. )preAllocSize預先開辟磁盤空間,用於後續寫入事務日志。默認是64M,每個事務日志大小就是64M。如果ZK的快照頻率較大的話,建議適當減小這個參數snapCount每進行snapCount次事務日志輸出後,觸發一次快照(snapshot), 此時,ZK會生成一個snapshot.文件,同時創建一個新的事務日志文件log.。默認是100000.(真正的代碼實現中,會進行一定的隨機數處理,以避免所有服務器在同一時間進行快照而影響性能)(Java system property: zookeeper.snapCount )traceFile用於記錄所有請求的log,一般調試過程中可以使用,但是生產環境不建議使用,會嚴重影響性能。(Java system property:? requestTraceFile )maxClientCnxns單個客戶端與單台服務器之間的連接數的限制,是ip級別的,默認是60,如果設置為0,那麼表明不作任何限制。請注意這個限制的使用范圍,僅僅是單台客戶端機器與單台ZK服務器之間的連接數限制,不是針對指定客戶端IP,也不是ZK集群的連接數限制,也不是單台ZK對所有客戶端的連接數限制。指定客戶端IP的限制策略,這裡有一個patch,可以嘗試一下:http://rdc.taobao.com/team/jm/archives/1334(No Java system property)clientPortAddress對於多網卡的機器,可以為每個IP指定不同的監聽端口。默認情況是所有IP都監聽 clientPort 指定的端口。 New in 3.3.0minSessionTimeoutmaxSessionTimeoutSession超時時間限制,如果客戶端設置的超時時間不在這個范圍,那麼會被強制設置為最大或最小時間。默認的Session超時時間是在2 * tickTime ~ 20 * tickTime 這個范圍 New in 3.3.0fsync.warningthresholdms事務日志輸出時,如果調用fsync方法超過指定的超時時間,那麼會在日志中輸出警告信息。默認是1000ms。(Java system property: fsync.warningthresholdms )New in 3.3.4autopurge.purgeInterval在上文中已經提到,3.4.0及之後版本,ZK提供了自動清理事務日志和快照文件的功能,這個參數指定了清理頻率,單位是小時,需要配置一個1或更大的整數,默認是0,表示不開啟自動清理功能。(No Java system property) New in 3.4.0autopurge.snapRetainCount這個參數和上面的參數搭配使用,這個參數指定了需要保留的文件數目。默認是保留3個。(No Java system property) New in 3.4.0electionAlg在之前的版本中, 這個參數配置是允許我們選擇leader選舉算法,但是由於在以後的版本中,只會留下一種“TCP-based version of fast leader election”算法,所以這個參數目前看來沒有用了,這裡也不詳細展開說了。(No Java system property)initLimitFollower在啟動過程中,會從Leader同步所有最新數據,然後確定自己能夠對外服務的起始狀態。Leader允許F在 initLimit 時間內完成這個工作。通常情況下,我們不用太在意這個參數的設置。如果ZK集群的數據量確實很大了,F在啟動的時候,從Leader上同步數據的時間也會相應變長,因此在這種情況下,有必要適當調大這個參數了。(No Java system property)syncLimit在運行過程中,Leader負責與ZK集群中所有機器進行通信,例如通過一些心跳檢測機制,來檢測機器的存活狀態。如果L發出心跳包在syncLimit之後,還沒有從F那裡收到響應,那麼就認為這個F已經不在線了。注意:不要把這個參數設置得過大,否則可能會掩蓋一些問題。(No Java system property)leaderServes默認情況下,Leader是會接受客戶端連接,並提供正常的讀寫服務。但是,如果你想讓Leader專注於集群中機器的協調,那麼可以將這個參數設置為no,這樣一來,會大大提高寫操作的性能。(Java system property: zookeeper. leaderServes )server.x=[hostname]:nnnnn[:nnnnn]這裡的x是一個數字,與myid文件中的id是一致的。右邊可以配置兩個端口,第一個端口用於F和L之間的數據同步和其它通信,第二個端口用於Leader選舉過程中投票通信。(No Java system property)group.x=nnnnn[:nnnnn]weight.x=nnnnn對機器分組和權重設置,可以 參見這裡(No Java system property)cnxTimeoutLeader選舉過程中,打開一次連接的超時時間,默認是5s。(Java system property: zookeeper. cnxTimeout )zookeeper.DigestAuthenticationProvider.superDigestZK權限設置相關,具體參見《使用super身份對有權限的節點進行操作 》和 《ZooKeeper權限控制》skipACL對所有客戶端請求都不作ACL檢查。如果之前節點上設置有權限限制,一旦服務器上打開這個開頭,那麼也將失效。(Java system property: zookeeper.skipACL )forceSync這個參數確定了是否需要在事務日志提交的時候調用 FileChannel .force來保證數據完全同步到磁盤。(Java system property: zookeeper.forceSync )jute.maxbuffer每個節點最大數據量,是默認是1M。這個限制必須在server和client端都進行設置才會生效。(Java system property: jute.maxbuffer )

7. 在上面創建的/home/www/zookeeper-3.4.8/data下創建myid文件,並在其中寫入對應的ip的機器的編號(上面的server.1)中的1

$ vi myid1

8. 配置環境變量,進入root(也可以是其他用戶)用戶目錄下,編輯.bash_profile,並使修改生效

$ cd ~$ vi .bash_profile#zookeeper envexport ZOOKEEPER_HOME=/usr/local/zookeeper-3.4.8export PATH=$ZOOKEEPER_HOME/bin:$PATH$ source .bash_profile

9. 開啟防火牆,開啟上述幾個端口

$ chkconfig iptables on$ service iptables start$ vi /etc/sysconfig/iptables-A FORWARD -j REJECT --reject-with icmp-host-prohibited RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT-A FORWARD -j REJECT --reject-with icmp-host-prohibited RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 2181 -j ACCEPT-A FORWARD -j REJECT --reject-with icmp-host-prohibited RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 2888 -j ACCEPT-A FORWARD -j REJECT --reject-with icmp-host-prohibited RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 3888 -j ACCEPT $ service iptables restart$ service iptables status

這裡如果不會用centOS7的firewalled,可以關閉firewalled,安裝iptables 一、配置防火牆,開啟80端口、3306端口 CentOS 7.0默認使用的是firewall作為防火牆,這裡改為iptables防火牆。 1. 關閉firewall: systemctl stop firewalld.service #停止firewall systemctl disable firewalld.service #禁止firewall開機啟動 2. 安裝iptables防火牆 yum install iptables-services #安裝 vi /etc/sysconfig/iptables #編輯防火牆配置文件 3. systemctl restart iptables.service #最後重啟防火牆使配置生效 systemctl enable iptables.service #設置防火牆開機啟動

10 啟動zookeeper測試

$ ./zkServer.sh start$ jps //查看進程//產看狀態$ ./zkServer.sh status//停止服務$ ./zkServer.sh stop

11 設置開機啟動

$ vi /etc/rc.localsu - root -c '/usr/local/jie/zookeeper-3.4.8/bin/./zkServer.sh start'

http://xxxxxx/Linuxjc/1156064.html TechArticle

Copyright © Linux教程網 All Rights Reserved