雖然 kubernetes 社區一直在努力使得有狀態應用成為一等公民,也推出了 statefulset 控制器支持 pod 的順序部署,穩定的域名訪問和存儲訪問。但鑒于 MySQL 部署運維的多樣性和復雜性,在 kubernetes 上部署 MySQL 仍然要面臨眾多挑戰。
邊壩ssl適用于網站、小程序/APP、API接口等需要進行數據傳輸應用場景,ssl證書未來市場廣闊!成為創新互聯建站的ssl證書銷售渠道,可以享受市場價格4-6折優惠!如果有意向歡迎電話聯系或者加微信:18980820575(備注:SSL證書合作)期待與您的合作!
1、業務流量入口的配置方式
傳統虛擬機環境下,我們通過虛IP的方式,讓業務應用都配置事先定義的一個虛IP為鏈接數據庫的地址,然后由高可用服務保證虛IP始終能被路由到master數據庫。在kubernetes中,出現了一層網絡插件屏蔽了底層網絡拓撲,高可用服務管理虛IP的方式需要隨之適應調整,比如通過service結合標簽完成虛IP的漂移,但service本身是kubernetes提供的一項功能,其可靠性和性能都取決于kubernetes服務的穩定。以性能來說,service是kubeproxy組件通過配置iptables實現的,當iptables規則較多時不可避免的會產生時延,需要我們針對性的解決。
2、容器隔離帶來的監控視野問題
在 kubernetes 中,如果將 MySQL 制作為 container 運行在一個 pod 中,container 會將 MySQL 進程和運行環境隔離在一個單獨的 namespace 中。監控組件在獲取 MySQL 的一些 metirc 時,可能不得不進入與 MySQL 同一個 namespace 中,在部署和設計監控組件時需要考慮到這些限制。
3、存儲在 kubernetes 中,支持配置各種不同的存儲。
如果使用本地存儲 local persistent volume,則需要綁定 MySQL 在一個固定的節點,這就完全浪費了 kubernetes 靈活調度的天然優勢;而如果使用遠程共享存儲,確實是將 MySQL 進程與其存儲完全解耦,使得 MySQL 進程可以在任意節點調度,然而考慮到高 I/O 吞吐量的情況,就不是那么美好了。設計時需要考量遠程存儲是否能夠滿足 MySQL 的帶寬要求。
4、高可用/備份恢復
kubernetes 提供的 statefulset 控制器只能提供最基本的部署,刪除功能,無法實現完善的 MySQL 集群高可用/備份恢復操作。對于有狀態應用的部署,仍需要定制開發,所以多數公司提供了定制的 operator 來完成應用容器的管理。比如 etcd operator,MySQL operator,后文將為大家詳述我測試使用 MySQL operator 的一些記錄。
1、主要解決針對大型網站架構中持久化部分中,大量數據存儲以及高并發訪問所帶來是數據讀寫問題。分布式是將一個業務拆分為多個子業務,部署在不同的服務器上。集群是同一個業務,部署在多個服務器上。
2、著重對數據切分做了細致豐富的講解,從數據切分的原理出發,一步一步深入理解數據的切分,通過深入理解各種切分策略來設計和優化我們的系統。這部分中我們還用到了數據庫中間件和客戶端組件來進行數據的切分,讓廣大網友能夠對數據的切分從理論到實戰都會有一個質的飛躍。
通過分布式+集群的方式來提高io的吞吐量,以及數據庫的主從復制,主主復制,負載均衡,高可用,分庫分表以及數據庫中間件的使用。
Ambari是Apache的開源項目,它幫助用戶在GUI頁面上簡單的部署、管理、監控Hadoop集群環境。Ambari支持的Hadoop組件包括HDFS、Hive、HBase、Spark、Yarn等,HortonWorks官方也是采用Ambari來完成自家HDP套件的安裝、管理及監控的。除了預置的組件之外,Ambari還支持自定義組件的安裝,同時,支持RESTful的API,繼而可以通過命令行等方式調用Ambari來完成一些自動化的任務。
本文共分為兩部分,第一部分介紹如何在Docker虛擬化環境中部署Ambari;第二部分介紹如何基于Ambari來部署和管理Hadoop集群。
### 環境信息
* Docker發行版:Docker for Mac
* Docker版本:17.06.2-ce
* Docker容器OS:Ubuntu 14.04
* Ambari版本:2.5.2.0
Docker環境準備
拉取Docker鏡像:在宿主機上執行命令docker pull ubuntu:14.04從遠端倉庫中獲取Ubuntu的鏡像,也可以獲取其他OS的鏡像,本文以Ubuntu為例
啟動Docker容器:執行如下命令,以ubuntu:14.04鏡像為基礎啟動容器:
docker run -itd --name ambari_new -p 8080:8080 -p 3306:3306 -v /Users/yuxiaolei/Workspace/dockerShared:/dockerShared ubuntu:14.04 /bin/bash
由于Ambari啟動Web程序的時候占用8080端口,因此要從Docker宿主機上訪問Ambari頁面,需要通過參數 -p 來制定端口映射;
作為新手,筆者在容器內部署好Ambari之后,才發現Web頁面的8080端口和MySQL的3306端口(可選)沒有暴露給Docker宿主機,也就沒法從宿主機上通過瀏覽器來登陸Ambari,因此必須想辦法在已有容器上開放端口。
有兩個方法:
1)如果宿主機為Linux系統,則修改iptables防火墻來指定端口映射規則;
2)如果是非Linux系統,可以將已裝Ambari的容器commit為新的鏡像,再基于該鏡像創建新的容器。此時,就可以在docker run命令中添加參數 -p 來指定端口映射了。
還有一個問題,Ambari將其數據存儲在數據庫中,支持MySQL、PostgreSQL等數據庫;容器內安裝MySQL之后,基于上一步創建的新容器里,會發現MySQL啟動不起來,執行命令/etc/init.d/mysql restart啟動失敗,在/var/log/mysql/error.log日志文件中打印有170802 14:02:59 [ERROR] Fatal error: Can't open and lock privilege tables: Got error 140 from storage engine的錯誤,經過網上查資料,需要在創建容器的時候添加參數-v /var/lib/mysql將MySQL數據存儲路徑聲明為數據卷,即可解決問題。
啟動容器之后,執行命令docker exec -it ambari /bin/bash進入容器內部。
Ambari安裝
配置Ubuntu的軟件倉庫源:
國內建議采用阿里云的軟件源,在root賬號下用vim打開/etc/apt/sources.list文件,刪除文件所有內容,粘貼如下內容:
deb trusty main restricted universe multiverse
deb trusty-security main restricted universe multiverse
deb trusty-updates main restricted universe multiverse
deb trusty-proposed main restricted universe multiverse
deb trusty-backports main restricted universe multiverse
deb-src trusty main restricted universe multiverse
deb-src trusty-security main restricted universe multiverse
deb-src trusty-updates main restricted universe multiverse
deb-src trusty-proposed main restricted universe multiverse
deb-src trusty-backports main restricted universe multiverse
執行命令apt-get update完成軟件列表更新
安裝Ambari所依賴的軟件
apt-get install software-properties-common
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java8-installer
sudo apt-get install oracle-java8-set-default
完成安裝之后,在 ~/.bashrc 文件末尾添加命令 `export JAVA_HOME=/usr/lib/jvm/java-8-oracle ` 以配置JAVA\_HOME 環境變量。
create database ambari;use ambari;GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root_password' WITH GRANT OPTION;FLUSH PRIVILEGES;exit;
由于Ambari的數據存儲在MySQL數據庫中,這里為Ambari單獨創建了database,并為其賦了完全控制權限;說明:假設MySQL數據庫root用戶的密碼為:root\_password
修改 `/etc/mysql/my.conf`,將`skip-external-locking`注釋掉,并確保 `bind-address = 0.0.0.0` 配置,以使MySQL可被遠程主機訪問。
執行命令`/etc/init.d/mysql restart`重啟MySQL 服務。
時間同步服務器ntp:執行命令apt-get install ntp安裝ntp時間同步服務器,以便于集群環境中各節點的時鐘一致;執行命令sudo service ntp restart重啟ntp服務。
MySQL:執行命令apt-get install mysql-server安裝MySQL服務器,安裝完成后執行命令mysql -uroot -proot進入MySQL客戶端,執行如下SQL代碼:
Oracle JDK:逐條執行如下命令,以添加WebUpd8團隊()提供的Oracle JDK倉庫源,并從該倉庫安裝JDK:
下載Ambari倉庫文件
進入cd /etc/apt/sources.list.d目錄,執行命令wget 從HortonWorks倉庫中下載Ambari源文件,下載后切勿修改list文件名;
執行命令apt-key adv --recv-keys --keyserver keyserver.ubuntu.com B9733A7A07513CAD以信任遠端倉庫的GPG簽名
執行命令apt-get update更新Ambari軟件源
執行命令apt-get install ambari安裝Ambari套件,由于軟件包較大(700多MB),這里情耐心等待,不過apt-get支持斷點下載,網絡終端后重新執行命令時不會從零開始下載
配置Ambari:
執行命令mysql -uroot -proot進入MySQL客戶端,執行命令source ambari進入ambari的數據庫,并執行命令source /var/lib/ambari-server/resources/Ambari-DDL-MySQL-CREATE.sql來完成Ambari的數據庫表初始化操作;
執行命令ambari-server setup啟動Ambari的引導式配置操作,根據指導做配置即可。需要注意的是,JDK不要選擇由Ambari從網絡下載,應該選擇自定義路徑,然后輸入/usr/lib/jvm/java-8-oracle即可;
啟動Ambari:執行命令ambari-server start,啟動日志存儲路徑為/var/log/ambari-server/ambari-server.log
啟動之后,由于我們之前做了Docker容器的端口映射,因此可以在宿主機上打開瀏覽器輸入即可訪問Ambari登陸頁面
登陸用戶名和密碼均為admin,登陸之后就可以看到Ambari的首頁了,如下圖:
{% asset_img
文章題目:mysql集群怎么訪問,mysql怎么訪問數據庫
本文地址:http://m.kartarina.com/article24/hegcce.html
成都網站建設公司_創新互聯,為您提供搜索引擎優化、網站維護、網站制作、做網站、小程序開發、網站收錄
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯