Pika 部署

Pika

安裝 Pika

注意: ubuntu14.04

  1. 安裝相關依賴

    apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libboost-all-dev libhdf5-serial-dev libgflags-dev libgoogle-glog-dev liblmdb-dev protobuf-compiler libv4l-dev libgtk-3-0 \
    apt-get install gcc-4.8 \
    apt-get install g++-4.8

  2. 獲取項目源代碼

git clone --recursive https://github.com/Qihoo360/pika

  1. 更新子模塊(如果是從已有舊的代碼庫升級到2.3.4的版本)

pika目前submodule依賴glog,pink,slash,nemo(nemo -> nemo-rocksdb -> rocksdb);

cd pika ## 進入目錄更新子模塊 \
git submodule update --recursive --init

  1. 編譯

    make

  2. 啓動

    ./output/bin/pika -c ./conf/pika.conf &

  3. 如果沒有意外,那麼啓動就回出現9221端口
netstat -lntup |grep pika
tcp        0      0 0.0.0.0:9221            0.0.0.0:*               LISTEN      15805/pika      
tcp        0      0 0.0.0.0:10221           0.0.0.0:*               LISTEN      15805/pika      
tcp        0      0 0.0.0.0:10321           0.0.0.0:*               LISTEN      15805/pika      
tcp        0      0 0.0.0.0:11221           0.0.0.0:*               LISTEN      15805/pika      
  1. 簡單版配置文件
cat > /opt/pika/conf/pika.conf <<EOF
port : 9221
thread-num : 2
sync-thread-num : 6
sync-buffer-size : 10
log-path : /data/pika/log/
loglevel : info
db-path : /data/pika/db
write-buffer-size : 268435456
timeout : 60
requirepass :
masterauth :
userpass :
userblacklist :
dump-prefix :
dump-path : /data/pika/dump/
dump-expire : 0
pidfile : ./pika.pid
maxclients : 20000
target-file-size-base : 20971520
expire-logs-days : 7
expire-logs-nums : 10
root-connection-num : 2
slowlog-log-slower-than : 10000
slave-read-only : 0
db-sync-path : /data/pika/dbsync/
db-sync-speed : -1
slave-priority : 100
server-id : 1
double-master-ip :
double-master-port :
double-master-server-id :
binlog-file-size : 104857600
compression : snappy
max-background-flushes : 1
max-background-compactions : 2
max-cache-files : 5000
max-bytes-for-level-multiplier : 10
EOF

如果使用上面的配置文件,就需要創建下面目錄


cp output /opt/pika -rfp 
chown -R rela.rela /data/pika/log/ /data/pika/db /opt/pika/dump/ /data/pika/dbsyn
mkdir -p  /data/logs/pika /data/pika/db /opt/pika/dump/ /data/pika/dbsync
chown -R rela.rela /data/logs/pika /data/pika/db /opt/pika/dump/ /data/pika/
cat > /etc/supervisor/conf.d/pika.conf <<EOF
[program:pika]
command=/opt/pika/bin/pika -c /opt/pika/conf/pika.conf
;process_name=%(process_num)02d
numprocs=1
user=rela
autostart=true
autorestart=true
redirect_stderr=true
stdout_logfile=/data/logs/pika/pika_sup.log
stdout_logfile_maxbytes=50MB
stdout_logfile_backups=5
EOF

supervisorctl update
安裝完成

pika 主從同步設置

master 無需修改

slave 只要修改添加一個配置

  1. /opt/pika/conf/pika.conf 配置文件加的內容如下
# replication
#slaveof : master-ip:master-port
slaveof : 172.31.15.151:9221
  1. 清空 slave 原有的 db 目錄內容,以及log 目錄內容
rm -rf /data/pika/log/*  /data/pika/db/*

如果不清空的話,如果slave 原來存在內容,那邊出出現下面的故障:

W0108 10:58:02.447227 19749 pika_trysync_thread.cc:93] Reply from master after trysync: ERR InvalidOffset
W0108 10:58:02.447358 19749 pika_trysync_thread.cc:125] something wrong with sync, come in SyncError stage
W0108 10:58:02.447381 19749 pika_server.cc:684] Sync error, set repl_state to PIKA_REPL_ERROR

注意: 防火牆需要把pika的四個端口都開放,不然可能會出現無法slaveof成功

  1. 重啓 pika

    supervisorctl restart pika

pika 雙主

pika雙主

修改雙主A的pika.conf配置文件

...
# server-id for hub
server-id : 1
...
# The peer-master config
double-master-ip :     192.168.10.2    配置另一個主的ip
double-master-port : 9220      配置另一個主的port
double-master-server-id :  2   配置另一個主的server id (注意不要與本機server id和已經連接的slave的sid重複)

修改雙主B的pika.conf配置文件

 # server-id for hub
 server-id : 2
 ...
 # The peer-master config
 double-master-ip :     192.168.10.1    配置另一個主的ip
 double-master-port : 9220      配置另一個主的port
 double-master-server-id :  1   配置另一個主的server id (注意不要與本機server id和已經連接的slave的sid重複)

分別啓動兩個Pika實例, 使用info查看信息

 ...
  # DoubleMaster(DOUBLEMASTER)
  role:double_master
  the peer-master host:192.168.10.2
  the peer-master port:9220
  double_master_mode: True
  repl_state: 3
  double_master_server_id:2
  double_master_recv_info: filenum 0 offset 0

其他

Codis集羣的搭建與使用

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