国产成人精品18p,天天干成人网,无码专区狠狠躁天天躁,美女脱精光隐私扒开免费观看

Docker部署SQL Server 2019 Always On集群的實(shí)現

發(fā)布時(shí)間:2021-08-15 18:37 來(lái)源: 閱讀:0 作者:Expect-樂(lè ) 欄目: 服務(wù)器 歡迎投稿:712375056

目錄

      Docker部署Always on集群

      SQL Server在2016年開(kāi)始支持Linux。隨著(zhù)2017和2019版本的發(fā)布,它開(kāi)始支持Linux和容器平臺上的HA/DR、Kubernetes和大數據集群解決方案。

      在本文中,我們將在3個(gè)節點(diǎn)的Docker容器上安裝SQL Server 2019,并創(chuàng )建AlwaysOn可用性組。

      我們的目標是使用單個(gè)配置文件快速準備好環(huán)境。因此,開(kāi)發(fā)人員或測試團隊可以快速執行諸如兼容性、連通性、代碼功能等測試。

      在本節中,我們將首先準備一個(gè)基于Ubuntu的映像,以便能夠在容器上安裝可用性組。然后我們將執行必要的安裝。

      重要提示:不建議在生產(chǎn)環(huán)境中執行操作。安裝是在Ubuntu 18.04上執行的。

      安裝Docker

      安裝Docker就不介紹了,自行安裝即可.

      架構

      端口表示:外網(wǎng)端口:內網(wǎng)端口

      準備相關(guān)容器鏡像

      拉取操作系統和數據庫的Docker鏡像,如下

      操作系統

      docker pull ubuntu:18.04
      

      SQL Server 2019

      docker pull mcr.microsoft.com/mssql/server:2019-latest
      

      可通過(guò)docker images來(lái)查看已下載的鏡像信息。

      鏡像地址:

      開(kāi)始配置-容器

      環(huán)境準備完畢后,開(kāi)始正式的配置安裝。

      步驟1:創(chuàng )建Dockerfile

      創(chuàng )建目錄用于存放dockerfile、docker-compose.yml等文件。

      mkdir /sql2019ha
      cd /sql2019ha
      touch dockerfile
      vi dockerfile
      

      dockerfile內容如下

      FROM ubuntu:18.04
       
      RUN apt-get update
       
      RUN apt install sudo wget curl gnupg gnupg1 gnupg2 -y
      RUN apt install software-properties-common systemd vim -y
      RUN wget -qO- https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
       
      RUN add-apt-repository "$(wget -qO- https://packages.microsoft.com/config/ubuntu/18.04/mssql-server-2019.list)"
      RUN apt-get update
      RUN apt-get install -y mssql-server
       
      RUN /opt/mssql/bin/mssql-conf set hadr.hadrenabled  1
      RUN /opt/mssql/bin/mssql-conf set sqlagent.enabled true
       
      EXPOSE 1433
       
      ENTRYPOINT /opt/mssql/bin/sqlservr
      

      說(shuō)明

      • FROM:表示基于什么鏡像進(jìn)行安裝的
      • RUN:在鏡像中進(jìn)行的操作
      • EXPOSE:指定服務(wù)端口
      • ENTRYPOINT:運行命令

      步驟2:編譯鏡像

      通過(guò)dockerfile來(lái)編譯鏡像,用于后面的安裝,命令:docker build -t sqlag2019:ha .

      其中sqlag2019為鏡像名稱(chēng),ha是鏡像標簽,.表示在當前目錄下編譯,因為dockerfile就在當前目錄下。

      以下輸出是精簡(jiǎn)的,實(shí)際上輸出非常多…也需要一定時(shí)間(安裝一些包、數據庫等),由網(wǎng)速決定

      $ docker build -t sqlag2019:ha .
      Sending build context to Docker daemon   2.56kB
      Step 1/12 : FROM ubuntu:18.04
       ---> c3c304cb4f22
      Step 2/12 : RUN apt-get update
       ---> Running in 950e50f80f00
      Get:1 http://archive.ubuntu.com/ubuntu bionic InRelease [242 kB]
      Get:2 http://security.ubuntu.com/ubuntu bionic-security InRelease [88.7 kB]
      Get:3 http://security.ubuntu.com/ubuntu bionic-security/main amd64 Packages [932 kB]
      Get:4 http://archive.ubuntu.com/ubuntu bionic-updates InRelease [88.7 kB]...
      Step 3/12 : RUN apt install sudo wget curl gnupg gnupg1 gnupg2 -y
       ---> Running in edc9d15b2383
      ..
      ..
      Step 8/12 : RUN sudo apt-get install -y mssql-server
       ---> Running in 43d82a503f8a
      Reading package lists...
      Building dependency tree...
      Reading state information...
      The following additional packages will be installed:
      Step 9/12 : RUN sudo /opt/mssql/bin/mssql-conf set hadr.hadrenabled  1
       ---> Running in 166c6596d2dd
      SQL Server needs to be restarted in order to apply this setting. Please run
      'systemctl restart mssql-server.service'.
      Removing intermediate container 166c6596d2dd
       ---> bcdb057fed43
      Step 10/12 : RUN sudo /opt/mssql/bin/mssql-conf set sqlagent.enabled true
       ---> Running in 22dd6a93d1ef
      SQL Server needs to be restarted in order to apply this setting. Please run
      'systemctl restart mssql-server.service'.
      Removing intermediate container 22dd6a93d1ef
       ---> 6b90afbaf94e
      Step 11/12 : EXPOSE 1433
       ---> Running in bcc14f3b0bad
      Removing intermediate container bcc14f3b0bad
       ---> 4aae1563aa74
      Step 12/12 : ENTRYPOINT /opt/mssql/bin/sqlservr
       ---> Running in 68b6ed45ff6a
      Removing intermediate container 68b6ed45ff6a
       ---> b7467618c371
      Successfully built b7467618c371
      Successfully tagged sqlag2019:ha
      

      最后出現Successfully表示編譯成功,否則根據錯誤信息進(jìn)行解決。

      步驟3:創(chuàng )建容器

      現在鏡像編譯好了,下面再通過(guò)docker-compose文件來(lái)創(chuàng )建、配置3個(gè)容器,具體內容如下:

      $ touch docker-compose.yml
      $ vi docker-compose.yml
      
      version: '3'
       
      services:
        db1:
          container_name: sqlNode1
          image: sqlag2019:ha
          hostname: sqlNode1
          domainname: lab.local
          environment:
            SA_PASSWORD: "MyPassWord123"
            ACCEPT_EULA: "Y"
          ports:
          - "1501:1433"
          extra_hosts:
            sqlNode2.labl.local: "172.16.238.22"
            sqlNode3.labl.local: "172.16.238.23"
          networks:
              internal:
                      ipv4_address: 172.16.238.21
       
        db2:
          container_name: sqlNode2
          image: sqlag2019:ha
          hostname: sqlNode2
          domainname: lab.local
          environment:
            SA_PASSWORD: "MyPassWord123"
            ACCEPT_EULA: "Y"
          ports:
          - "1502:1433"
          extra_hosts:
            sqlNode1.lab.local: "172.16.238.21"
            sqlNode3.lab.local: "172.16.238.23"
          networks:
              internal:
                      ipv4_address: 172.16.238.22
       
        db3:
          container_name: sqlNode3
          image: sqlag2019:ha
          hostname: sqlNode3
          domainname: lab.local
          environment:
            SA_PASSWORD: "MyPassWord123"
            ACCEPT_EULA: "Y"
          ports:
          - "1503:1433"
          extra_hosts:
            sqlNode1.lab.local: "172.16.238.21"
            sqlNode2.lab.local: "172.16.238.22"
          networks:
              internal:
                      ipv4_address: 172.16.238.23
       
      networks:
          internal:
            ipam:
                  driver: default
                  config:
                      - subnet: 172.16.238.0/24
      

      步驟4:?jiǎn)?dòng)容器

      然后通過(guò)docker-compose up -d命令啟動(dòng)三個(gè)容器,其中-d表示在后臺運行。

      $ docker-compose up -d
      Creating network "sql2019hademo_internal" with the default driver
      Creating sqlNode2 ...
      Creating sqlNode1 ...
      Creating sqlNode2
      Creating sqlNode3 ...
      Creating sqlNode1
      Creating sqlNode2 ... done
      

      注意:docker-compose是需要單獨安裝的,就是一個(gè)可執行文件??赏ㄟ^(guò)apt、yum來(lái)安裝。

      查看容器狀態(tài)

      $ docker-compose ps
      Name                Command               State           Ports
      --------------------------------------------------------------------------
      sqlNode1   /bin/sh -c /opt/mssql/bin/ ...   Up      0.0.0.0:1501->1433/tcp
      sqlNode2   /bin/sh -c /opt/mssql/bin/ ...   Up      0.0.0.0:1502->1433/tcp
      sqlNode3   /bin/sh -c /opt/mssql/bin/ ...   Up      0.0.0.0:1503->1433/tcp
      

      至此容器已經(jīng)啟動(dòng)完成,下面通過(guò)SSMS連接數據庫進(jìn)行相關(guān)檢查和配置ALWAYSON。

      步驟5:SSMS連接MSSQL

      通過(guò)宿主機的外網(wǎng)IP+端口連接相應的數據庫,如下:

      注意:IP和端口之間是逗號


      可以看到數據庫的圖標也是Linux的圖標。

      配置-數據庫

      這部分就是在數據庫中進(jìn)行相關(guān)配置,如:創(chuàng )建KEY加密文件,管理用戶(hù)、可用組等。

      步驟1:連接主庫-sqlNode1

      主庫也就是節點(diǎn)1,端口是1501,連接方法如上圖。

      我們將ssl/' target='_blank'>證書(shū)和私鑰提取到/tmp/dbm_certificate.cer/tmp/dbm_certificate.pvk文件中。

      我們將這些文件復制到其他節點(diǎn),并根據以下文件創(chuàng )建主密鑰和證書(shū):執行以下腳本

      USE master
      GO
       
      CREATE LOGIN dbm_login WITH PASSWORD = 'MyStr0ngPa$w0rd';
      CREATE USER dbm_user FOR LOGIN dbm_login;
      GO
       
      CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'MyStr0ngPa$w0rd';
      go
      CREATE CERTIFICATE dbm_certificate WITH SUBJECT = 'dbm';
      BACKUP CERTIFICATE dbm_certificate
      TO FILE = '/tmp/dbm_certificate.cer'
      WITH PRIVATE KEY (
              FILE = '/tmp/dbm_certificate.pvk',
              ENCRYPTION BY PASSWORD = 'MyStr0ngPa$w0rd'
          );
      GO
      

      將文件拷貝到其他兩個(gè)節點(diǎn):

      $ docker cp sqlNode1:/tmp/dbm_certificate.cer .
      $ docker cp sqlNode1:/tmp/dbm_certificate.pvk .
      $ docker cp dbm_certificate.cer sqlNode2:/tmp/
      $ docker cp dbm_certificate.pvk sqlNode2:/tmp/
      $ docker cp dbm_certificate.cer sqlNode3:/tmp/
      $ docker cp dbm_certificate.pvk sqlNode3:/tmp/
      

      步驟2:連接從庫-sqlNode2和sqlNode3

      兩個(gè)從庫的端口分別是:1502和1503.然后重復主庫執行的操作,如下:

      CREATE LOGIN dbm_login WITH PASSWORD = 'MyStr0ngPa$w0rd';
      CREATE USER dbm_user FOR LOGIN dbm_login;
      GO
       
      CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'MyStr0ngPa$w0rd';
      GO
      CREATE CERTIFICATE dbm_certificate   
          AUTHORIZATION dbm_user
          FROM FILE = '/tmp/dbm_certificate.cer'
          WITH PRIVATE KEY (
          FILE = '/tmp/dbm_certificate.pvk',
          DECRYPTION BY PASSWORD = 'MyStr0ngPa$w0rd'
      );
      GO
      

      步驟3:所有節點(diǎn)

      在所有節點(diǎn)上執行以下命令

      CREATE ENDPOINT [Hadr_endpoint]
          AS TCP (LISTENER_IP = (0.0.0.0), LISTENER_PORT = 5022)
          FOR DATA_MIRRORING (
              ROLE = ALL,
              AUTHENTICATION = CERTIFICATE dbm_certificate,
              ENCRYPTION = REQUIRED ALGORITHM AES
              );
      ALTER ENDPOINT [Hadr_endpoint] STATE = STARTED;
      GRANT CONNECT ON ENDPOINT::[Hadr_endpoint] TO [dbm_login];
      

      啟用開(kāi)機自啟動(dòng)ALWAYON,在所有節點(diǎn)執行以下命令

      ALTER EVENT SESSION  AlwaysOn_health ON SERVER WITH (STARTUP_STATE=ON);
      GO
      

      步驟4:創(chuàng )建高可用組

      可以用SSMS工具和T-SQL兩種方式,下面以T-SQL為例:

      運行以下腳本在主節點(diǎn)中創(chuàng )建一個(gè)可用性組。 請注意,選擇CLUSTER_TYPE = NONE選項是因為它是在沒(méi)有諸如Pacemaker或Windows Server故障轉移群集之類(lèi)的群集管理平臺的情況下安裝的。

      如果要在Linux上安裝AlwaysOn AG,則應為Pacemaker選擇CLUSTER_TYPE = EXTERNAL:

      CREATE AVAILABILITY GROUP [AG1]
              WITH (CLUSTER_TYPE = NONE)
              FOR REPLICA ON
              N'sqlNode1'
                  WITH (
                  ENDPOINT_URL = N'tcp://sqlNode1:5022',
                  AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT,
                      SEEDING_MODE = AUTOMATIC,
                      FAILOVER_MODE = MANUAL,
                  SECONDARY_ROLE (ALLOW_CONNECTIONS = ALL)
                      ),
              N'sqlNode2'
                  WITH (
                  ENDPOINT_URL = N'tcp://sqlNode2:5022',
                  AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT,
                      SEEDING_MODE = AUTOMATIC,
                      FAILOVER_MODE = MANUAL,
                  SECONDARY_ROLE (ALLOW_CONNECTIONS = ALL)
                      ),
              N'sqlNode3'
                  WITH (
                  ENDPOINT_URL = N'tcp://sqlNode3:5022',
                  AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT,
                      SEEDING_MODE = AUTOMATIC,
                      FAILOVER_MODE = MANUAL,
                  SECONDARY_ROLE (ALLOW_CONNECTIONS = ALL)
                      );
      GO
      

      在從庫中執行以下命令,將從庫加入到AG組中

      ALTER AVAILABILITY GROUP [ag1] JOIN WITH (CLUSTER_TYPE = NONE);
      ALTER AVAILABILITY GROUP [ag1] GRANT CREATE ANY DATABASE;
      GO
      

      至此在Docker容器中安裝SQL Server Alwayson集群已經(jīng)完成了!

      注意:當指定CLUSTER_TYPE = NONE創(chuàng )建可用組時(shí),在執行故障轉移時(shí)需執行以下命令

      ALTER AVAILABILITY GROUP [ag1] FORCE_FAILOVER_ALLOW_DATA_LOSS

      測試

      在主庫上創(chuàng )建一個(gè)數據庫,并加入到可用組AG中。

      CREATE DATABASE agtestdb;
      GO
      ALTER DATABASE agtestdb SET RECOVERY FULL;
      GO
      BACKUP DATABASE agtestdb TO DISK = '/var/opt/mssql/data/agtestdb.bak';
      GO
      ALTER AVAILABILITY GROUP [ag1] ADD DATABASE [agtestdb];
      GO
      

      通過(guò)SSMS查看同步狀態(tài)是否正常.

      參考連接









      到此這篇關(guān)于Docker部署SQL Server 2019 Always On集群的實(shí)現的文章就介紹到這了,更多相關(guān)Docker部署SQLServer集群內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

      免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng )、來(lái)自本網(wǎng)站內容采集于網(wǎng)絡(luò )互聯(lián)網(wǎng)轉載等其它媒體和分享為主,內容觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如侵犯了原作者的版權,請告知一經(jīng)查實(shí),將立刻刪除涉嫌侵權內容,聯(lián)系我們QQ:712375056,同時(shí)歡迎投稿傳遞力量。

      Doc
      最新在线伦费观看中文| XX娇小嫩XX中国XX| 在线观看亚洲AV日韩A∨| 五月丁香六月激情综合在线视频| 人人妻人人狠人人爽 | 成全高清视频免费观看|