瘋狂創客圈 Java 高併發【 億級流量聊天室實戰】實戰系列 【博客園總入口 】html
面試必備+面試必備之 高併發基礎書籍 【Netty Zookeeper Redis 高併發實戰 】java
《SpringCloud Nginx 高併發核心編程》 環境搭建 圖文教程和演示視頻:面試
組件 | 連接地址 |
---|---|
【必須】 虛擬機Linux 開發環境準備 | windows vmware 擴展硬盤 + 共享文件 |
Linux openresty 安裝 | Linux openresty 安裝 |
【必須】Linux Redis 安裝(帶視頻) | Linux Redis 安裝(帶視頻) |
【必須】Linux Zookeeper 安裝(帶視頻) | Linux Zookeeper 安裝, 帶視頻 |
Windows Redis 安裝(帶視頻) | Windows Redis 安裝(帶視頻) |
RabbitMQ 離線安裝(帶視頻) | RabbitMQ 離線安裝(帶視頻) |
ElasticSearch 安裝, 帶視頻 | ElasticSearch 安裝, 帶視頻 |
Nacos 安裝(帶視頻) | Nacos 安裝(帶視頻) |
【必須】Eureka | Eureka 入門,帶視頻 |
【必須】springcloud Config 入門,帶視頻 | springcloud Config 入門,帶視頻 |
【必須】Zuul 詳解,帶視頻 | Zuul 詳解,帶視頻 |
【必須】SpringCloud 腳手架打包與啓動 | SpringCloud腳手架打包與啓動 |
在學習環境中,若是沒有多餘的服務器,這裏就將三個ZooKeeper 節點都安裝到本地機器上,故稱謂僞集羣模式。
雖然,僞集羣模式只是便於開發、普通測試,儘可能不用於生產環境。從學習的角度來講,若是瞭解了僞集羣模式下的安裝和配置,生產環境下的安裝和配置的方法,也是大體差很少的。spring
安裝ZooKeeper以前,須要規劃一下僞集羣節點的個數,ZooKeeper節點數有如下要求:
(1)ZooKeeper集羣節點數必須是基數。
爲何呢?ZooKeeper 集羣中,須要一個主節點,稱之爲leader節點。leader節點是集羣經過選舉的規則,從全部節點中選舉出來的。選舉的規則中很重要的一條是:要求可用節點數量 > 總節點數量/2 。若是是偶數個節點,則可能會出現不知足這個規則的狀況。
(2)ZooKeeper集羣至少是3個。
ZooKeeper能夠經過一個節點,正常啓動和提供服務。可是,一個節點的ZooKeeper服務,不能叫作集羣,其可靠性大打折扣,僅僅做爲學習使用。正常狀況下,搭建ZooKeeper集羣,至少須要3個節點。apache
這裏,做爲學習案例,在本地機器上,規劃搭建一個3個節點的僞集羣。 實際上,啓動的時候,啓動兩個節點,Zookeeper就能夠正常工做了。編程
首先是下載。在apache的官方網站提供了好多鏡像下載地址,而後找到對應的版本,目前最新的是3.4.13。vim
http://mirrors.cnnic.cn/apache/ZooKeeper/ZooKeeper-3.4.13/ZooKeeper-3.4.13.tar.gzwindows
瘋狂創客圈網盤,已經備好的安裝包,也能夠直接下載服務器
mkdir -p /work/zookeeper/zooKeeper-3.4.13 tar -zxvf /work/zookeeper/zooKeeper-3.4.13.tar.gz -C /work/zookeeper/zooKeeper-3.4.13
安裝集羣的第一步,在安裝目錄下,建立好兩個目錄:日誌目錄、數據目錄。併發
mkdir -p /work/zookeeper/zooKeeper-3.4.13/data mkdir -p /work/zookeeper/zooKeeper-3.4.13/logs
進入 /work/zookeeper/zooKeeper-3.4.13/conf目錄,把zoo_sample.cfg文件複製一份名字改爲zoo.cfg。
cp zoo_sample.cfg zoo.cfg
修改zoo.cfg 配置文件,設置日誌目錄、數據目錄、客戶端鏈接端口、僞集羣節點的配置
dataDir=/work/zookeeper/zookeeper_01/data dataLogDir=/work/zookeeper/zookeeper_01/logs clientPort=2181 server.1=192.168.71.82:2881:3881 server.2=192.168.71.82:2882:3882 server.3=192.168.71.82:2883:3883
兩個目錄設置選項的介紹以下:
dataDir=/work/zookeeper/zookeeper_01/data dataLogDir=/work/zookeeper/zookeeper_01/logs
(1)dataDir:數據目錄選項,配置爲前面準備的數據目錄。myid文件,處於此目錄下。
(2) dataLogDir:日誌目錄選項, 配置爲前面準備的日誌目錄。若是沒有設置該參數,默認將使用和dataDir相同的設置。
clientPort = 2181 的介紹以下:
clientPort: 表示client客戶端鏈接ZooKeeper集羣中的節點的端口號。在生成環境的集羣中,不一樣的節點,處於不一樣的機器,端口號通常都相同,便於記憶和使用。因爲這裏是僞集羣模式,因此,三個節點集中在一臺機器上,因此3個端口號,配置爲不同。
clientPort:通常設置爲2181。僞集羣下,不一樣的節點,clientPort不能相同,能夠按照編號,進行累加。
集羣節點信息的配置,示例以下:
server.1=127.0.0.1:2888:3888 server.2=127.0.0.1:2889:3889 server.3=127.0.0.1:2890:3890
節點信息,須要配置集羣中全部節點的 (id)編號、IP、端口。在「.cfg」配置文件中,能夠按照這樣的格式進行配置,每一行都表明一個節點。一個節點格式爲:
server.id=host:port:port
在ZooKeeper集羣中,每一個節點都須要感知到整個集羣是哪些節點組成,因此,每個配置文件,都須要配置所有的節點。
整體來講,配置節點的時候,注意四點:
(1)不能有相同id的節點,須要確保每一個節點的myid文件中的id值不一樣;
(2)每一行 「server.id=host:port:port」中的id值,須要與所對應節點的數據目錄下的myid中的id值,保持一致;
(3)每個配置文件,都須要配置所有的節點信息。不只僅是配置本身的那份,而是須要全部節點的id、ip、端口配置。
(4)每一行 「server.id=host:port:port」中,須要配置兩個端口。前一個端口爲通訊端口(如示例中的2888)用於節點之間的通信使用,後一個端口爲選主端口(如上的3888)用於選舉 leader主節點使用。
(5)在僞集羣的模式下,每一行記錄,相同的端口必須修改都不同,主要是避免端口衝突。在分佈式集羣模式下,因爲不一樣節點的ip不一樣,每一行記錄,能夠端口相同。
在data目錄下,爲每個節點,建立一個id文件。每個節點,須要有一個記錄節點id 的文本文件,文件名爲myid。myid文件的特色以下:
(1)myid文件的惟一做用,是記錄(僞)節點的編號;
(2)myid文件是一個文本文件,文件名稱爲myid;
(3)myid文件內容爲一個數字,表示節點的編號;
(4)myid文件中,只能有一個數字,不能有其餘的內容;
(5)myid文件的存放位置,默認處於數據目錄下面。
ZooKeeper對id的值,有何要求呢?
首先,myid文件中id的值,只能是一個數字,即一個節點的編號ID;
其次,id的範圍是1~255,表示集羣最多的節點個數爲255個。
將zooKeeper-3.4.13 複製三份分別取名爲zookeeper_01和zookeeper_02和zookeeper_03。第三份能夠複製也能夠不復制。
cp /work/zooKeeper/zooKeeper-3.4.13 /work/zooKeeper/zookeeper_01 cp /work/zooKeeper/zooKeeper-3.4.13 /work/zooKeeper/zookeeper_02 cp /work/zooKeeper/zooKeeper-3.4.13 /work/zooKeeper/zookeeper_03
而且在每一份的配置文件中,修改正確的路徑,端口號、以及myid 文件的編號。
好比 /work/zookeeper_02的/conf/zoo.cfg的配置項,修改以下。
dataDir=/data/zookeeper/zookeeper_02/data dataLogDir=/data/zookeeper/zookeeper_02/logs clientPort=2182 server.1=192.168.71.82:2881:3881 server.2=192.168.71.82:2882:3882 server.3=192.168.71.82:2883:3883
好比 /work/zookeeper_02/data/myid的數字,也須要對應修改成2。
分別進入啓動三臺服務。至少2臺。
/work/zookeeper/zookeeper-01/bin/zkServer.sh start /work/zookeeper/zookeeper-02/bin/zkServer.sh start
10.啓動完成後,查看服務狀態。
/work/zookeeper/zookeeper-02/bin/zkServer.sh status
在開機啓動命令文件中,加入兩行,命令以下:
vim /etc/rc.local
加入兩行,以下:
/usr/bin/su - root -c "/work/zookeeper/zookeeper-01/bin/zkServer.sh start" /usr/bin/su - root -c "/work/zookeeper/zookeeper-02/bin/zkServer.sh start"
具體,請關注 Java 高併發研習社羣 【博客園 總入口 】
最後,介紹一下瘋狂創客圈:瘋狂創客圈,一個Java 高併發研習社羣 【博客園 總入口 】
瘋狂創客圈,傾力推出:面試必備 + 面試必備 + 面試必備 的基礎原理+實戰 書籍 《Netty Zookeeper Redis 高併發實戰》