Docker部署SQL Server 2019 Always On集群的实现
docker部署always on集群
sql server在2016年开始支持linux。随着2017和2019版本的发布,它开始支持linux和容器平台上的ha/dr、kubernetes和大数据集群解决方案。
在本文中,我们将在3个节点的docker容器上安装sql server 2019,并创建alwayson可用性组。
我们的目标是使用单个配置文件快速准备好环境。因此,开发人员或测试团队可以快速执行诸如兼容性、连通性、代码功能等测试。
在本节中,我们将首先准备一个基于ubuntu的映像,以便能够在容器上安装可用性组。然后我们将执行必要的安装。
重要提示:不建议在生产环境中执行操作。安装是在ubuntu 18.04上执行的。
安装docker
安装docker就不介绍了,自行安装即可.
架构
主机名 | ip | 端口 | 角色 |
---|---|---|---|
sqlnode1 | 宿主机ip | 1501:1433 | 主 |
sqlnode2 | 宿主机ip | 1502:1433 | 副本 |
sqlnode3 | 宿主机ip | 1503:1433 | 副本 |
端口表示:外网端口:内网端口
准备相关容器镜像
拉取操作系统和数据库的docker镜像,如下
操作系统
sql server 2019
可通过docker images
来查看已下载的镜像信息。
镜像地址:
开始配置-容器
环境准备完毕后,开始正式的配置安装。
步骤1:创建dockerfile
创建目录用于存放dockerfile、docker-compose.yml等文件。
dockerfile内容如下
说明:
- from:表示基于什么镜像进行安装的
- run:在镜像中进行的操作
- expose:指定服务端口
- entrypoint:运行命令
步骤2:编译镜像
通过dockerfile来编译镜像,用于后面的安装,命令:docker build -t sqlag2019:ha .
其中sqlag2019
为镜像名称,ha
是镜像标签,.
表示在当前目录下编译,因为dockerfile就在当前目录下。
以下输出是精简的,实际上输出非常多…也需要一定时间(安装一些包、数据库等),由网速决定
最后出现successfully
表示编译成功,否则根据错误信息进行解决。
步骤3:创建容器
现在镜像编译好了,下面再通过docker-compose
文件来创建、配置3个容器,具体内容如下:
步骤4:启动容器
然后通过docker-compose up -d
命令启动三个容器,其中-d
表示在后台运行。
注意:docker-compose是需要单独安装的,就是一个可执行文件。可通过apt、yum来安装。
查看容器状态
至此容器已经启动完成,下面通过ssms连接数据库进行相关检查和配置alwayson。
步骤5:ssms连接mssql
通过宿主机的外网ip+端口连接相应的数据库,如下:
注意:ip和端口之间是逗号
可以看到数据库的图标也是linux的图标。
配置-数据库
这部分就是在数据库中进行相关配置,如:创建key加密文件,管理用户、可用组等。
步骤1:连接主库-sqlnode1
主库也就是节点1,端口是1501,连接方法如上图。
我们将证书和私钥提取到/tmp/dbm_certificate.cer
和/tmp/dbm_certificate.pvk
文件中。
我们将这些文件复制到其他节点,并根据以下文件创建主密钥和证书:执行以下脚本
将文件拷贝到其他两个节点:
步骤2:连接从库-sqlnode2和sqlnode3
两个从库的端口分别是:1502和1503.然后重复主库执行的操作,如下:
步骤3:所有节点
在所有节点上执行以下命令
启用开机自启动alwayon,在所有节点执行以下命令
步骤4:创建高可用组
可以用ssms工具和t-sql两种方式,下面以t-sql为例:
运行以下脚本在主节点
中创建一个可用性组。 请注意,选择cluster_type = none
选项是因为它是在没有诸如pacemaker或windows server故障转移群集之类的群集管理平台的情况下安装的。
如果要在linux上安装alwayson ag,则应为pacemaker选择cluster_type = external:
在从库中执行以下命令,将从库加入到ag组中
至此在docker容器中安装sql server alwayson集群已经完成了!
注意:当指定cluster_type = none
创建可用组时,在执行故障转移时需执行以下命令
测试
在主库上创建一个数据库,并加入到可用组ag中。
通过ssms查看同步状态是否正常.
参考连接
到此这篇关于docker部署sql server 2019 always on集群的实现的文章就介绍到这了,更多相关docker部署sqlserver集群内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
推荐阅读
-
docker部署rabbitmq集群的实现方法
-
使用Docker运行SQL Server的实现
-
docker-compose部署etcd集群的实现步骤
-
Docker部署Mysql集群的实现
-
docker部署rabbitmq集群的实现方法
-
基于Windows Server 2008 R2的WSFC实现 SQL Server 2012高可用性组(Always
-
基于Windows Server 2008 R2的WSFC实现 SQL Server 2012高可用性组(Always
-
Docker部署SQL Server 2019 Always On集群的实现
-
Docker部署MySQL8集群(一主二从)的实现步骤
-
Docker部署Mysql集群的实现