譯意: 水獺,資料搬運工
語言: 純java開發
定位: 基于資料庫增量日志解析,準實時同步到本機房或異地機房的mysql/oracle資料庫. 一個分布式資料庫同步系統
otter的環境需要:mysql,jdk,zookeeper,node,aria2,manager
otter安裝需要三台機器,我實作的是兩台機器之間的Mysql資料庫同步,即雙寫同步,zookeeper叢集。
在master機器上安裝manager,在slave1和slave2上面安裝node
1 、在slave1和slave2上安裝JDK并配置JDK的環境變量
本文使用的jdk:jdk-7u79-linux-x64.tar.gz
直接解壓,配置環境變量就OK了。
2、在slave1和slave2上安裝mysql
# yum install -y mysql-server mysql mysql-devel
# service mysqld start //啟動mysql服務
# mysqladmin -u root password 'root' // 給root賬号設定密碼為 root
安裝完後,修改mysql的配置檔案:
# vim /etc/my.cnf
在[mysqld]下面添加:
log-bin=mysql-bin
binlog-format=ROW #修改成ROW
server-id = 1 #兩個機房的serverid設定為不一樣的值
然後重新開機資料庫,分别在slave1和slave2庫上建立otter的資料庫賬号和密碼,例如canal/canal
CREATE USER canal IDENTIFIED BY 'canal';
GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'canal'@'%';
FLUSH PRIVILEGES;
show grants for 'canal'; #檢視權限
3、安裝zookeeper
zookeeper可以隻單機安裝,也可以以叢集形式安裝,安裝完成後啟動。本文是安裝的叢集,三台機器。
本文使用的是:zookeeper-3.4.6.tar.gz
解壓,進入conf下面進行配置
# cp zoo_sample.cfg zoo.cfg
# vim zoo.cfg
dataDir=/root/cloud/zookeeper-3.4.6/data #進行修改
添加下面的内容:
server.1=master:2888:3888
server.2=slave1:2888:3888
server.3=slave2:2888:3888
在zookeeper-3.4.6 下面建立data,然後進入data
# vim myid
裡面添加1。
scp -rq zookeeper-3.4.6 slave1:/root/cloud/
把slave1裡面的myid裡面的内容改為2
scp -rq zookeeper-3.4.6 slave2:/root/cloud/
把slave2裡面的myid裡面的内容改為3
都修改完後,啟動zookeeper
進入zookeeper-3.4.6/bin下面執行
./zkServer.sh start 啟動
./zkServer.sh status 檢視狀态
4、安裝manager,在master機器上面安裝
manager依賴于mysql進行配置資訊的存儲,是以需要預先安裝mysql
# yum install -y mysql-server mysql mysql-devel
# service mysqld start //啟動mysql服務
# mysqladmin -u root password 'root' // 給root賬号設定密碼為 root
初始化otter manager系統表:
下載下傳:
# wget https://raw.github.com/alibaba/otter/master/manager/deployer/src/main/resources/sql/otter-manager-schema.sql
載入sql:
# mysql -uroot -proot
mysql> source /root/cloud/otter-manager-schema.sql
# mkdir manager
# tar -zxvf manager.deployer-4.2.13.tar.gz -C manager
配置修改
進入conf下面修改
# vim otter.properties
otter.domainName = 192.168.10.1 修改為manager的ip,使用者web通路
## otter manager database config manager上面的mysql資訊
otter.database.driver.class.name = com.mysql.jdbc.Driver
otter.database.driver.url = jdbc:mysql://127.0.0.1:3306/otter
otter.database.driver.username = root
otter.database.driver.password = root
## default zookeeper address 選擇一個就近的zookeeper叢集位址
otter.zookeeper.cluster.default = 192.168.10.1:2181
準備啟動
# bin/startup.sh
檢視日志
vim logs/manager.log
2016-12-08 15:28:14.844 [] INFO com.alibaba.otter.manager.deployer.OtterManagerLauncher - ## start the manager server.
2016-12-08 15:28:37.179 [] INFO com.alibaba.otter.manager.deployer.JettyEmbedServer - ##Jetty Embed Server is startup!
2016-12-08 15:28:37.179 [] INFO com.alibaba.otter.manager.deployer.OtterManagerLauncher - ## the manager server is running now ......
出現類似日志,代表啟動成功
驗證
通路: http://192.168.10.1:8080/,出現otter的頁面,即代表啟動成功
初始密碼為:admin/admin,即可完成登入。目前:匿名使用者隻有隻讀檢視的權限,登入為管理者才可以有操作權限
manager安裝完成。
5、安裝node
node會受到otter manager進行管理,需要在manager頁面為node定義配置資訊,并生成一個唯一id。
a. 首先通路manager頁面的機器管理,添加zookeeper管理,點選添加
b. 通路manager頁面的機器管理,點選node管理,點選添加
幾點說明:
機器名稱:可以随意定義,友善自己記憶即可
機器ip:對應node節點将要部署的機器ip,如果有多ip時,可選擇其中一個ip進行暴露. (此ip是整個叢集通訊的入口,實際情況千萬别使用127.0.0.1,否則多個機器的node節點會無法識别)
機器端口:對應node節點将要部署時啟動的資料通訊端口,建議值:2088
下載下傳端口:對應node節點将要部署時啟動的資料下載下傳端口,建議值:9090
外部ip :對應node節點将要部署的機器ip,存在的一個外部ip,允許通訊的時候走公網處理。
zookeeper叢集:為提升通訊效率,不同機房的機器可選擇就近的zookeeper叢集.
node這種設計,是為解決單機部署多執行個體而設計的,允許單機多node指定不同的端口
機器添加完成後,跳轉到機器清單頁面,擷取對應的機器序号nid
通過上面的操作,擷取到了node節點對應的唯一标示,稱之為node id,簡稱:nid. 記錄該nid,後續啟動nid時會使用
安裝aria2
node 需要aria2支援,在slave1和slave2機器上分别安裝了一套。
本文用到的是:aria2-1.17.1.tar.gz,node.deployer-4.2.13.tar.gz
# tar -zxvf aria2-1.17.1.tar.gz
進入目錄: cd aria2-1.17.1
編譯:
./configure
出現如下錯誤:
configure: error: in `/root/cloud/aria2-1.17.1':
configure: error: no acceptable C compiler found in $PATH
# yum -y install gcc
然後./configure,現在就成功通過了。
# make 報錯的話,再重新執行一次/configure這個就好了。
# make install
安裝node
# mkdir node
# tar -zxvf node.deployer-4.2.13.tar.gz -C node
配置修改
nid配置 (将上面擷取到的序号,儲存到conf目錄下的nid檔案,比如我添加的機器對應序号為1)
# echo 1 > conf/nid
otter.properties配置修改
## otter arbitrate & node connect manager config
otter.manager.address = 192.168.10.1:1099 修改為manager服務位址
準備啟動
# sh startup.sh
檢視日志
# more logs/node/node.log
2016-12-08 15:59:31.666 [main] INFO com.alibaba.otter.node.deployer.OtterLauncher - INFO ## the otter server is running now ......
看到如上日志,代表node啟動完成.
驗證
通路: http://192.168.10.1:8080,檢視對應的節點狀态,如果變為了已啟動,代表已經正常啟動。(ps,如果是未啟動,會是一個紅色高亮)
slave2機器上也安裝上面的部署安裝aria2和node
表示node安裝成功。
到此otter安裝成功。