利用docker鏡像配置mysql叢集+nextcloud叢集+haproxy負載平衡

來源:互聯網
上載者:User

標籤:分享   包括   技術分享   net   check   roo   lis   下載   指定   

測試環境:

docker

xampp 9.1.1

ubuntu 16.0.4

hadoop 2.7

jdk 1.8

一、配置mysql叢集

通過docker拉取mysql叢集鏡像建立容器,包括ndb_mgm(管理節點)、ndb_mgmd01、ndbd01(資料節點1)、ndbd02(資料節點2)、mysqld01(sql節點1)、mysqld02(sql節點2)

 

docker run -itd --name ndb_mgmd01 --net=scg --ip 192.166.0.2 -v /root/owncloud-cluster/MysqlCluster/config.ini:/etc/mysql-cluster.ini:ro h3nrik/mysql-cluster ndb_mgmd

 

docker run -itd --name ndbd01 --net=scg --ip 192.166.0.10 h3nrik/mysql-cluster ndbd 192.166.0.2

 

docker run -itd --name ndbd02 --net=scg --ip 192.166.0.11 h3nrik/mysql-cluster ndbd 192.166.0.2

 

docker run -itd --name mysqld01  --net=scg --ip 192.166.0.100  h3nrik/mysql-cluster mysqld 192.166.0.2

 

docker run -itd --name mysqld02  --net=scg --ip 192.166.0.101  h3nrik/mysql-cluster mysqld 192.166.0.2

 

docker run -it --name ndb_mgm --net=scg h3nrik/mysql-cluster ndb_mgm 192.166.0.2

 

其中--net參數是指定容器間內部訪問網路名稱,--ip是指定各容器ip,-v後的內容是指在本地配置好config.ini檔案,然後將其映射到ndb_mgmd容器內

config.ini配置內容如下

  [NDBD DEFAULT]
  NoOfReplicas=2
  DataMemory=80M
  IndexMemory=18M
  datadir=/usr/local/mysql/data

  [NDB_MGMD DEFAULT]
  datadir=/var/lib/mysql-cluster

  [NDB_MGMD]
  NodeId=1
  hostname=192.166.0.2

  [NDBD]
  NodeId=10
  hostname=192.166.0.10

  [NDBD]
  NodeId=11
  hostname=192.166.0.11

  [MYSQLD]
  NodeId=100
  hostname=192.166.0.100

  [MYSQLD]
  NodeId=101
  hostname=192.166.0.101

驗證mysql叢集配置是否成功:

docker run -it --name ndb_mgm --net=scg h3nrik/mysql-cluster ndb_mgm 192.166.0.2後進入ndb_mgm管理節點

 

 輸入命令show查看資料節點和sql節點串連情況

mysql-cluster配置成功

二、配置haproxy負載平衡

docker run -d --name my-running-haproxy –-ip=192.166.0.50 –port=8011:3306 –net=scg -v /usr/local/etc/haproxy/haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg:ro haproxy:latest

--ip指定haproxy容器ip,-net指定容器內部網路名稱,-p指定連接埠映射,-v將本地設定檔映射到容器內

設定檔內容如下

  global
  log 127.0.0.1 local0 notice
  # user haproxy
  # group haproxy

  defaults
  log global
  retries 2
  timeout connect 3000
  timeout server 5000
  timeout client 5000

  listen mysql-cluster
  bind *:3306
  mode tcp
  # option mysql-check user haproxy_check
  balance roundrobin
  server mysql01 192.166.0.100:3306 check
  server mysql02 192.166.0.101:3306 check

  listen stats #monitor
  mode http
  bind *:8888
  stats uri /

啟動haproxy負載平衡容器

docker start haproxy容器名

三、配置nextcloud

1、  官網下載nextcloud並解壓

2、 將nextcloud檔案夾複製到/opt/lamp/htdocs,該路徑為xampp的主機檔案

3、  啟動xampp

sudo /opt/lamp/lamp start

4、  在/opt/lamp/htdocs下建立data檔案夾

5、  給data檔案授權

Sudo chmod -R 777 /opt/lamp/htdocs

Sudo chmod -R 770 /opt/lamp/htdocs/data

Sudo chown -R daemon:daemon /opt/lamp/htdocs/data

6、進入mysqld01並建立資料庫

建立新使用者

mysql>CREATE USER ‘test‘@‘l%‘ IDENTIFIED BY ‘123456‘;

建立新資料庫

mysql>CREATE DATABASE IF NOT EXISTS nextcloud;  

 為nextcloud資料庫授權

mysql>GRANT ALL PRIVILEGES ON nextcloud.* TO ‘test‘@‘%‘ IDENTIFIED BY ‘123456‘;

mysql>flush priveleges;

 授權遠端存取資料庫

mysql> grant all privileges on *.* to ‘test‘@‘%‘ identified by ‘123456‘ with grant option;

mysql>flush priveleges;

7、  進入mysqld02並授權

mysql>CREATE USER ‘test‘@‘l%‘ IDENTIFIED BY ‘123456‘;

 

mysql>GRANT ALL PRIVILEGES ON nextcloud.* TO ‘test‘@‘%‘ IDENTIFIED BY ‘123456‘;

mysql>flush priveleges;

 

mysql> grant all privileges on *.* to ‘test‘@‘%‘ identified by ‘123456‘ with grant option;

mysql>flush priveleges;

 這裡跟mysqld01的不同之處在於不需要再建nextcloud資料庫,但是要建立使用者和授權,新的使用者跟mysqld01建的一樣就好。

8、開啟localhost/nextcloud輸入資料庫資訊

配置成功

 

 

利用docker鏡像配置mysql叢集+nextcloud叢集+haproxy負載平衡

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.