zookeeper-3.5.5 集羣安裝 , php7.2 - zookeeper擴展安裝

這兩天在搗騰zookeeper 分佈式

環境:centos7, java 1.8.0_171(預先已安裝)

A主機:192.168.0.106

B主機:192.168.0.107

C主機:192.168.0.108

zookeeper版本:apache-zookeeper-3.5.5-bin.tar.gz

下載地址:http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.5.5/apache-zookeeper-3.5.5-bin.tar.gz

zookeeper 安裝:

在三臺機子上分別下載安裝,解壓到 /opt目錄

A、B、C#tar -zxvf apache-zookeeper-3.5.5-bin.tar.gz -C /opt

A、B、C#cd /opt/apache-zookeeper-3.5.5-bin

A、B、C#cp conf/zoo_sample.cfg  conf/zoo.cfg

A、B、C# vim conf/zoo.cfg

tickTime=2000
initLimit=10
syncLimit=5
dataDir=/tmp/zookeeper
clientPort=2181

server.1=192.168.0.106:2888:3888
server.2=192.168.0.107:2889:3889
server.3=192.168.0.108:2890:3890

A#echo '1' > /tem/zookeeper/myid

B#echo '2' > /tem/zookeeper/myid

C#echo '3' > /tem/zookeeper/myid

依次運行

A、B、C#/bin/bash /opt/apache-zookeeper-3.5.5-bin/bin/zkServer.sh  start  #啓動

A、B、C#/bin/bash /opt/apache-zookeeper-3.5.5-bin/bin/zkServer.sh  status #查看狀態

A####
ZooKeeper JMX enabled by default
Using config: /opt/apache-zookeeper-3.5.5-bin/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost.
Mode: leader

B####
ZooKeeper JMX enabled by default
Using config: /opt/apache-zookeeper-3.5.5-bin/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost.
Mode: follower

C####
ZooKeeper JMX enabled by default
Using config: /opt/apache-zookeeper-3.5.5-bin/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost.
Mode: follower

至此zookeeper分佈式集羣搭建完成

 

PHP 7.2 擴展安裝

注意:我第一次是在Ubuntu 17上裝PHP擴展, 裝到最後報錯,google了下有很多人也遇到過這個問題,有說ubuntu系統不支持的,如是我換了臺centos安裝zookeeper擴展

make  all-am
make[1]: Entering directory '/root/apache-zookeeper-3.5.5/zookeeper-client/zookeeper-client-c'
/bin/bash ./libtool  --tag=CC   --mode=compile gcc -DHAVE_CONFIG_H -I.  -I./include -I./tests -I./generated   -Wall -Werror -Wdeclaration-after-statement  -g -O2 -D_GNU_SOURCE -MT zookeeper.lo -MD -MP -MF .deps/zookeeper.Tpo -c -o zookeeper.lo `test -f 'src/zookeeper.c' || echo './'`src/zookeeper.c
libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I./include -I./tests -I./generated -Wall -Werror -Wdeclaration-after-statement -g -O2 -D_GNU_SOURCE -MT zookeeper.lo -MD -MP -MF .deps/zookeeper.Tpo -c src/zookeeper.c  -fPIC -DPIC -o .libs/zookeeper.o
src/zookeeper.c: In function ‘print_completion_queue’:
src/zookeeper.c:2542:5: error: null argument where non-null required (argument 1) [-Werror=nonnull]
     fprintf(LOGSTREAM,"Completion queue: ");
     ^~~~~~~
src/zookeeper.c:2544:9: error: null argument where non-null required (argument 1) [-Werror=nonnull]
         fprintf(LOGSTREAM,"empty\n");
         ^~~~~~~
src/zookeeper.c:2550:9: error: null argument where non-null required (argument 1) [-Werror=nonnull]
         fprintf(LOGSTREAM,"%d,",cptr->xid);
         ^~~~~~~
src/zookeeper.c:2553:5: error: null argument where non-null required (argument 1) [-Werror=nonnull]
     fprintf(LOGSTREAM,"end\n");
     ^~~~~~~
cc1: all warnings being treated as errors
Makefile:1032: recipe for target 'zookeeper.lo' failed
make[1]: *** [zookeeper.lo] Error 1
make[1]: Leaving directory '/root/apache-zookeeper-3.5.5/zookeeper-client/zookeeper-client-c'
Makefile:691: recipe for target 'all' failed
make: *** [all] Error 2

安裝環境:

Centos7 , PHP7.2 , Nginx

一,首先下載Cppunit 測試庫

https://sourceforge.net/projects/cppunit/files/cppunit/1.12.1/cppunit-1.12.1.tar.gz/download

#tar -zxvf cppunit-1.12.1.tar.gz

#./configure

#make && make install

 

二,下載zookeeper二進制源碼 , 安裝zookeeper client C庫

# wget http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.5.5/apache-zookeeper-3.5.5.tar.gz

# tar -zxvf apache-zookeeper-3.5.5.tar.gz #解壓

#cd /root/apache-zookeeper-3.5.5/zookeeper-client/zookeeper-client-c  #進入客戶端C庫

#autoreconf -if

#ACLOCAL="aclocal -I /usr/local/share/aclocal" autoreconf -if

#./configure --prefix=/opt/zookeeper-lib  #如果第一步Cppunit 沒有安裝 加 --without-cppunit 跳過測試 可以看README文檔

#make && make install

 

三,下載zookeeper擴展包:

https://pecl.php.net/package/zookeeper

下載地址:https://pecl.php.net/get/zookeeper-0.6.4.tgz

# tar -zxvf zookeeper-0.6.4.tgz 

# cd zookeeper-0.6.4

#/usr/local/php/bin/phpize

#./configure –with-php-config=/usr/local/php/bin/php-config –with-libzookeeper-dir=/opt/zookeeper-lib #這裏是上一步安裝的c客戶端目錄

#make && make install

至此就安裝完成!!!

 

簡單測試:

1, 在zookeeper 創建一個節點

# bin/zkCli.sh -server
[zk: 127.0.0.1:2181(CONNECTED) 1] ls /
[cluster, zookeeper]
[zk: 127.0.0.1:2181(CONNECTED) 2] create /phpDemo 1
Created /phpDemo
[zk: 127.0.0.1:2181(CONNECTED) 3] ls /
[cluster, zookeeper, phpDemo]
[zk: 127.0.0.1:2181(CONNECTED) 4]

 

2, 然後新建phpZookeeperDemo.php文件,寫入代碼如下:

<?php
class ZookeeperDemo extends Zookeeper{
    public function __construct($host,$watcher_cb = null, $recv_timeout = 1000){
        parent::__construct($host,$watcher_cb,$recv_timeout);
    }
    public function watcher($i,$type,$key){
        echo "Insider Watcher\n";
        //監聽 /phpDemo 節點
        $this->get('/phpDemo',array($this,'watcher'));
    }
}
$zk_php = new ZookeeperDemo('192.168.0.106:2181');
$zk_php->get('/phpDemo',array($zk_php,'watcher'));
while(true){
    echo '.';
    sleep(2);
}

 

3, 運行phpZookeeperDemo.php ,  修改 /phpDemo 節點

輸出"Insider Watcher"。。 

成功!

 

資料閱讀:

http://zookeeper.apache.org/doc/r3.5.5/index.html

https://blog.51cto.com/snowtiger/2073908

https://github.com/andreiz/php-zookeeper

https://blog.csdn.net/u012152619/article/list/2?

https://github.com/apache/zookeeper

http://mirror.bit.edu.cn/apache/zookeeper/

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