譯意: 水獺,數據搬運工
語言: 純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安裝成功。