什么是Amoeba?

創(chuàng)新互聯(lián)服務(wù)項目包括山東網(wǎng)站建設(shè)、山東網(wǎng)站制作、山東網(wǎng)頁制作以及山東網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,山東網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到山東省份的部分城市,未來相信會繼續(xù)擴大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!

下文給大家?guī)硎裁词茿moeba?,希望能夠給大家在實際運用中帶來一定的幫助,負(fù)載均衡涉及的東西比較多,理論也不多,網(wǎng)上有很多書籍,今天我們就用創(chuàng)新互聯(lián)在行業(yè)內(nèi)累計的經(jīng)驗來做一個解答。

Amoeba是什么?

Amoeba(變形蟲)項目,該開源框架于2008年 開始發(fā)布一款 Amoeba for MySQL軟件。這個軟件致力于MySQL的分布式數(shù)據(jù)庫前端代理層,它主要在應(yīng)用層訪問MySQL的時候充當(dāng)SQL路由功能,專注于分布式數(shù)據(jù)庫代理層(Database Proxy)開發(fā),它位于與Client、DBServer(s)之間,對客戶端透明。具有 負(fù)載均衡、高可用性、SQL過濾、讀寫分離、可路由相關(guān)的到目標(biāo)數(shù)據(jù)庫、可并發(fā)請求多臺數(shù)據(jù)庫合并結(jié)果 。

通過Amoeba你能夠完成多數(shù)據(jù)源的高可用、負(fù)載均衡、數(shù)據(jù)切片的功能,目前Amoeba已在很多 企業(yè)的生產(chǎn)線上面使用。

什么是Amoeba?

需求案例:
有三個數(shù)據(jù)庫節(jié)點分別命名為Master、Slave1、Slave2如下:
Master: Master (只寫)
Slaves:Slave1、Slave2 (2個平等的數(shù)據(jù)庫。只讀/負(fù)載均衡)
案例實現(xiàn)Master、Slaves之間數(shù)據(jù)庫主從復(fù)制、讀寫分離,負(fù)載均衡的高可用Mysql架構(gòu)。

實驗架構(gòu)圖:
什么是Amoeba?

系統(tǒng)環(huán)境:
什么是Amoeba?

數(shù)據(jù)庫主從復(fù)制環(huán)境部署
一、mster:(10.100.246.241)
yum install -y mariadb
systemctl enable mariadb
systemctl start mariadb
1、修改mysql配置
找到主數(shù)據(jù)庫的配置文件my.cnf(或者my.ini),我的在/etc/mysql/my.cnf,在[mysqld]部分插入如下兩行:
[mysqld]
log-bin=mysql-bin //開啟二進(jìn)制日志
server-id=241 //設(shè)置server-id
什么是Amoeba?

2、重啟數(shù)據(jù)庫并重置
systemctl restart mariadb
mysql_secure_installation
什么是Amoeba?

3、啟mysql,創(chuàng)建用于同步的用戶賬號,并授予對應(yīng)的權(quán)限
打開mysql會話shell>mysql -uname -ppassword
分別創(chuàng)建兩個用戶,一個用戶授權(quán)給slave01和slave02,另一個用戶授權(quán)給amoeba云服務(wù)器
slave username:slave ;password:123456
amoeba username:amoeba ;password:123456

mysql>CREATE USER slave@'10.100.246.%' IDENTIFIED BY '123456';
mysql>GRANT REPLICATION SLAVE ON . TO slave@'10.100.246.%' WITH GRANT OPTION;
mysql>GRANT ALL PRIVILEGES ON . TO amoeba@10.100.246.240 IDENTIFIED BY '123456' WITH GRANT OPTION;
mysql>FLUSH PRIVILEGES;
什么是Amoeba?

4、查看master狀態(tài),記錄二進(jìn)制文件名(mysql-bin.000002)和位置(245)
SHOW MASTER STATUS;
什么是Amoeba?

5、防火墻放行服務(wù)及端口
什么是Amoeba?

二、slave01和slave02:(10.100.246.242,10.100.246.243)
注:slave02操作步驟除了my.cnf配置里的server-id號不一樣,其余操作步驟和slave01一樣
yum install -y mariadb
systemctl enable mariadb
systemctl start mariadb
1、更改mysql配置
找到my.cnf配置文件,添加server-id
[mysqld]
server-id=242  //設(shè)置server-id,必須唯一;slave02 server-id=243
什么是Amoeba?

2、重啟數(shù)據(jù)庫并重置
systemctl restart mariadb
mysql_secure_installation
什么是Amoeba?

3、打開mysql會話,執(zhí)行同步SQL語句(需要主服務(wù)器主機名,登陸憑據(jù),二進(jìn)制文件的名稱和位置):
CHANGE MASTER TO MASTER_HOST='10.100.246.241', MASTER_USER='slave', MASTER_PASSWORD='123456', MASTER_LOG_FILE='mysql-bin.000002', MASTER_LOG_POS=245;
什么是Amoeba?

4、啟動slave同步進(jìn)程,并查看slave狀態(tài)
mysql>start slave;
mysql>SHOW SLAVE STATUS;
什么是Amoeba?

5、建立amoeba用戶,并授予相關(guān)權(quán)限,為部署amoeba做準(zhǔn)備(兩臺從數(shù)據(jù)庫都要添加)
GRANT ALL PRIVILEGES ON . TO amoeba@10.100.246.240 IDENTIFIED BY '123456' WITH GRANT OPTION;
mysql>FLUSH PRIVILEGES;
什么是Amoeba?

6、防火墻放行服務(wù)及端口
什么是Amoeba?

JDK環(huán)境部署:(amoeba使用java編寫,所以運行amoeba的運行環(huán)境要安裝好java環(huán)境,并配置好環(huán)境變量)
1、卸載系統(tǒng)自帶的OpenJDK以及相關(guān)的java文件
rpm -aq | grep java
rpm -e --nodeps java-1.8.0-openjdk-1.8.0.131-11.b12.el7.x86_64 java-1.7.0-openjdk-1.7.0.141-2.6.10.5.el7.x86_64 java-1.7.0-openjdk-headless-1.7.0.141-2.6.10.5.el7.x86_64 java-1.8.0-openjdk-headless-1.8.0.131-11.b12.el7.x86_64
java -version
什么是Amoeba?
什么是Amoeba?
什么是Amoeba?

2、下載最新穩(wěn)定JDK
【注意】:JDK安裝在哪個用戶下,就是給哪個用戶使用
下載地址為
2.1當(dāng)前最新版本下載地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html
    歷史版本下載地址:  http://www.oracle.com/technetwork/java/javase/archive-139210.html

2.2粘貼地址到瀏覽器地址欄
什么是Amoeba?
根據(jù)版本,系統(tǒng)位數(shù),選擇tar.gz文件下載 (注:記得勾選license)
什么是Amoeba?

2.3下載完成后,將JDK包本地解壓,通過winscp上傳至amoeba服務(wù)器 /usr/java 目錄 (注:沒有java這個目錄可自行建立)
2.4將/java目錄中的文件授予執(zhí)行權(quán)限
chmod o+x /usr/java/ -R

3、配置JDK環(huán)境變量
在文本的最后一行粘貼如下:
注意JAVA_HOME=/usr/java/jdk-11.0.2  就是你自己的目錄
【注】:CentOS6上面的是JAVAHOME,CentOS7是{JAVA_HOME}
vim /etc/profile
#java environment
export JAVA_HOME=/usr/java/jdk-11.0.2
export CLASSPATH=.:${JAVA_HOME}/jre/lib/rt.jar:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar
export PATH=$PATH:${JAVA_HOME}/bin
什么是Amoeba?

4、剛剛設(shè)置的環(huán)境變量生效并檢查是否安裝成功
source /etc/profile 或者 . /etc/profile
java -version
什么是Amoeba?

Amoeba環(huán)境部署:(10.100.246.240)
一、準(zhǔn)備工作
1、amoeba使用java編寫,所以運行amoeba的運行環(huán)境要安裝好java環(huán)境,并配置好環(huán)境變量,jdk版本要在1.5以上,因為amoeba就是用jdk1.5編寫的;我的服務(wù)器java版本為11.0.2
2、amoeba是在主從同步的基礎(chǔ)上工作的,所以要先配置好MySQL的主從同步功能

二、下載安裝amoeba
1、下載地址:https://sourceforge.net/projects/amoeba/files/Amoeba%20for%20mysql/3.x/
選擇最新版本進(jìn)行下載;我下載的版本為:amoeba-mysql-3.0.5-RC-distribution.zip
什么是Amoeba?
2、下載完成后,在本地將包解壓,解壓完成后,通過winscp工具將amoeba-mysql-3.0.5-RC文件上傳至amoeba服務(wù)器/usr/amoeba目錄下(注:amoeba目錄自行建立)
3、授予該目錄執(zhí)行權(quán)限
[root@amoeba amoeba]# chmod o+x amoeba-mysql-3.0.5-RC/ -R

4、防火墻放行端口號
什么是Amoeba?

我們在amoeba文件夾中找到conf文件夾,其中我們需要配置的僅有dbServers.xml和amoeba.xm
5、編輯配置 /amoeba-mysql-3.0.5-RC/conf 目錄下dbServers.xml文件
首先我們來看下name為abstractServer的dbServer標(biāo)簽,其中abstractive屬性為true,意味著這是一個抽象的dbServer定義,可以由其他dbServer定義拓展,類似于抽象類,可以由其他類繼承和擴展。其中需要我們手動修改的是端口(port),數(shù)據(jù)庫(schema),用戶名(user),密碼(password);那么這里應(yīng)該如何填寫呢?本人第一次使用的時候也非常迷糊,其實我們應(yīng)該填寫的就是在master和slave上我們?yōu)閍moeba服務(wù)器創(chuàng)建的用于連接master和slave數(shù)據(jù)庫的用戶,因此這里應(yīng)該填寫port——3306(默認(rèn)端口無修改),schema——bob(bob數(shù)據(jù)庫),user——amoeba(用戶名),password——123456(密碼)

什么是Amoeba?

而abstractServer下方的dbServer就是我們實際中需要使用的,關(guān)于dbServer,可以根據(jù)自己的情況書寫,有幾個需要配置的數(shù)據(jù)庫,就填寫幾個,其中name可以自定義,最好書寫有含義的名稱,parent就填寫abstractServer,因為我們要繼承abstractServer,這樣我們就可以在abstractServer的基礎(chǔ)上進(jìn)行擴展(繼承了port,schema,user和password等屬性),只需要添加獨有的屬性即可。
案列為一主兩從,主為master,從一為slave01,從二為slave02。除了各自的dbServer之外,我們還可以新建一個dbServer作為數(shù)據(jù)庫池,用于整合那些功能相同的數(shù)據(jù)庫,案列中slave1和slave2都是從數(shù)據(jù)庫,負(fù)責(zé)讀取操作,我們就可以把它們集中在一起方便調(diào)用。其中屬性為loadbalance代表負(fù)載均衡,默認(rèn)值是1,代表輪詢算法,poolNames屬性就是讓我們放置那些具有共同功能的dbServer,例如slave1,,slave2,其中不同的dbServer以英文逗號隔開

什么是Amoeba?

6、編輯配置 /amoeba-mysql-3.0.5-RC/conf 目錄下amoeba.xml文件
配置完成dbSevers.xml之后,我們來配置amoeba.xml,首先我們來配置service標(biāo)簽,需要配置的地方有三點,port,user和password。其中port默認(rèn)是8066,可以自行更改,但是不要跟現(xiàn)有端口起沖突,如非必要不建議更改。user和password則可以自定義,無需跟master和slave創(chuàng)建的用戶一致。這里的端口,用戶名和密碼其實就是為了虛擬出一個mysql鏈接做準(zhǔn)備的(非真實,amoeba服務(wù)器可以不安裝真實的mysql數(shù)據(jù)庫)

特別說明:在service標(biāo)簽中有一個被注釋的ipAddress屬性,該屬性用于綁定可以鏈接amoeba虛擬出來的mysql的具體ip,如果不綁定,則amoeba服務(wù)器所在的網(wǎng)絡(luò)環(huán)境(在同一個局域網(wǎng)下,非同一個局域網(wǎng)下未測試)的其他服務(wù)器,可以通過amoeba的內(nèi)網(wǎng)ip進(jìn)行鏈接,如果綁定了127.0.0.1,那么只有amoeba服務(wù)器可以鏈接虛擬出來的mysql,這點需要注意

什么是Amoeba?

端口,用戶名和密碼配置完之后,我們來配置queryRouter標(biāo)簽,該標(biāo)簽可以實現(xiàn)真正意義上的讀寫分離,以上配置均為該標(biāo)簽做準(zhǔn)備。其中我們需要手動修改的地方有三處,分別是defaultPool,writePool和readPool。defaultPool配置了默認(rèn)的數(shù)據(jù)庫節(jié)點,一些除了SELECT\UPDATE\INSERT\DELETE的語句都會在defaultPool執(zhí)行,一般設(shè)置為主庫。writePool顧名思義就是數(shù)據(jù)庫寫庫,insert,update和delete操作都將會在此庫中執(zhí)行,一般設(shè)置為主庫。readPool就是寫庫。如果是單主單從,則readPool就寫從庫在dbServers.xml中設(shè)置的名稱,例如設(shè)置為slave01,如果是一主多從,則readPool設(shè)置為從數(shù)據(jù)庫池,例如本案例中的multiPool,就是從數(shù)據(jù)庫池,包含slave01和salve02兩個從數(shù)據(jù)庫,這樣就完成了讀寫分離(主從)和負(fù)載均衡(從一和從二)。至此,amoeba的配置工作已完成
什么是Amoeba?

7、配置jvm運行參數(shù)
運行在jdk11.0.2環(huán)境中的amoeba要求xss參數(shù)必須大于228才能啟動JVM
所以在amoeba安裝目錄下的jvm.properties文件中進(jìn)行參數(shù)設(shè)置
vim jvm.properties
JVM_OPTIONS="-server -Xms512m -Xmx1024m -Xss512k -XX:PermSize=16m -XX:MaxPermSize=96m"
什么是Amoeba?
什么是Amoeba?

8、啟動腳本
./launcher &
什么是Amoeba?

9、將腳本加入開機啟動項
vim  /etc/profile
./usr/amoeba/amoeba-mysql-3.0.5-RC/bin/launcher &
什么是Amoeba?

10、查看java服務(wù)
netstat -tnlap | grep java
什么是Amoeba?

客戶端驗證
1、安裝mariadb軟件
yum install -y mariadb

2、登錄amoeba服務(wù)器
mysql -h30.100.246.240 -udesktop -P8066 -p
什么是Amoeba?

3、測試數(shù)據(jù)庫是否能夠?qū)懭霐?shù)據(jù),主從數(shù)據(jù)是否同步
客戶端登錄數(shù)據(jù)庫后,進(jìn)入名為bob的數(shù)據(jù)庫,插入一張表
MySQL [bob]> CREATE TABLE cisco (id int(10),name varchar(10),type varchar(20));
MySQL [bob]> INSERT INTO cisco VALUE ('1','ccie','this_is_master');

在主數(shù)據(jù)庫和兩臺從數(shù)據(jù)庫上查看是否存在建立的table與表中插入的數(shù)據(jù),存在則說明寫入成功,主從同步成功
什么是Amoeba?

4、測試驗證兩臺從數(shù)據(jù)庫是否實現(xiàn)負(fù)載均衡(輪詢)
slave01:進(jìn)入bob數(shù)據(jù)庫,在cisco表中插入以下數(shù)據(jù)
MariaDB [bob]>INSERT INTO cisco VALUE ('2','ccie','this_is_slave01');

slave02:進(jìn)入bob數(shù)據(jù)庫,在cisco表中插入以下數(shù)據(jù)
MariaDB [bob]>INSERT INTO cisco VALUE ('2','ccie','this_is_slave01');

desktop:進(jìn)入bob數(shù)據(jù)庫,通過命令查看cisco表中數(shù)據(jù),因為是輪詢負(fù)載,所以表中查看數(shù)據(jù)會在slave01和slave02上來回切換數(shù)據(jù)
MariaDB [bob]>SELECT * FROM cisco;
什么是Amoeba?

5、測試驗證讀是否限制在slave01和slave02兩臺從數(shù)據(jù)庫中
5.1臨時關(guān)閉slave01和slave02與主數(shù)據(jù)庫的同步
MariaDB [bob]> STOP SLAVE;

5.2客戶端在cisco數(shù)據(jù)表中插入一條數(shù)據(jù),通過SELECT命令是否能查看插入的數(shù)據(jù),不能看見數(shù)據(jù),則實驗成功
什么是Amoeba?

5.3再將slave01和slave02與主數(shù)據(jù)庫的同步開啟,驗證客戶端上是否能夠查看到數(shù)據(jù)
slave01和slave02:MariaDB [bob]> START SLAVE;
desktop:MariaDB [bob]>SELECT * FROM cisco;
什么是Amoeba?

看了以上關(guān)于什么是Amoeba?,如果大家還有什么地方需要了解的可以在創(chuàng)新互聯(lián)行業(yè)資訊里查找自己感興趣的或者找我們的專業(yè)技術(shù)工程師解答的,創(chuàng)新互聯(lián)技術(shù)工程師在行業(yè)內(nèi)擁有十幾年的經(jīng)驗了。創(chuàng)新互聯(lián)官網(wǎng)鏈接muchs.cn

 

網(wǎng)頁名稱:什么是Amoeba?
文章分享:http://muchs.cn/article16/ihdpdg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站設(shè)計、網(wǎng)站營銷、響應(yīng)式網(wǎng)站、網(wǎng)站改版、標(biāo)簽優(yōu)化手機網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站制作