AlwaysOn可用性组搭建
前言
关于AlwaysOn高可用性组的官方介绍
关于SQL Server高可用性的相关概念
AlwaysOn利用了Windows 故障转移群集(FCI)的健康监测和自动故障转移的特性,所以AlwaysOn需要建立在Windows故障转移群集之上。关于故障转移群集的搭建在之前的文章有介绍(故障转移群集搭建)。但是和故障转移群集不同的地方是,可用性组不需要存放在共享存储上。另外,可用性组是数据库层面的,故障转移群集是实例层面的。
特点:
- AlwaysOn支持故障转移群集
- 多个用户数据库可以一同进行故障转移
- 每个辅助服务器上都有一份数据的拷贝,可以使服务器上的数据拷贝和主服务器上的数据完全同步
- 辅助服务器可用于只读的访问请求
- ……
大致步骤如下:
- 安装4台Windows Server2019服务器。
- 配置主机、网卡
- 安装AD域、DNS,添加域
- 安装故障转移群集
- 安装SQL Server
- 配置AlwaysOn可用性组
- 配置读写分离路由
服务器配置
演示配置为Windows Server 2019 DataCenter
,2核4G
,硬盘100G
,双网卡,Administrator
密码需要配置一致。
节点 | 主机名 | public ip | private ip | 群集ip | 侦听器 | DNS |
---|---|---|---|---|---|---|
ws11 | ws11 | 192.168.1.11 | 10.10.10.11 | 192.168.1.15 | 192.168.1.16 | 192.168.1.20 |
ws12 | ws12 | 192.168.1.12 | 10.10.10.12 | 192.168.1.15 | 192.168.1.16 | 192.168.1.20 |
ws13 | ws13 | 192.168.1.13 | 10.10.10.13 | 192.168.1.15 | 192.168.1.16 | 192.168.1.20 |
ws20 | ws20 | 192.168.1.20 | 10.10.10.20 | - | - | 192.168.1.20 |
注意:后续操作没有特殊说明3节点均需配置
配置域控
将ws20
作为域控服务器。
IP和DNS配置
配置网卡属性:
配置IP
地址:192.168.1.20
,并将DNS
设置为本机IP
无域控DNS配置:https://www.cnblogs.com/DragonStart/p/8275182.html
AD & DNS安装
打开服务器管理器,添加角色和功能向导,选择添加 Active Directory域服务
和 DNS
服务器
安装完成后,选择将此服务器升级为域控制器
配置域控
点击添加新林,自定义一个根域名
下一步,设置DNS密码
后续步骤默认,点击安装
安装完成后会自动重启,并使用域账户登录
查看电脑属性,可以看到ws20
节点已经加入域
节点加入域
更改DNS,设置为域控服务器IP,ws11
、ws12
、ws13
节点均操作
打开计算机属性,更改主机名并加入域
输入域控服务器用户名和密码
故障转移群集配置
网卡配置
ws11
、ws12
、ws13
节点均操作
重命名网卡:
public网卡:
跃点设置为:5
pirvate网卡:
设置跃点为:75
取消DNS注册
禁用NetBIOS
查看:
1 | get-netipinterface |
安装故障转移群集
安装
3个节点安装故障转移群集
新建角色和功能向导,选择故障转移群集
配置
服务器管理器面板 -> 工具,打开故障转移群集管理器
选择创建群集
把3个节点都加入群集
可以选择是否要运行测试
配置集群地址
查看群集状态
DNS中已经添加了群集的解析:
仲裁配置
可以看到,群集的见证是没有的:
添加一个共享文件夹做仲裁文件夹:ws20节点
配置仲裁
右键群集,选择更多操作,点击配置群集仲裁设置
选择仲裁见证
选择使用共享文件见证
选择在ws20
节点配置的共享文件夹
默认下一步,安装
安装完成后可以看到文件共享见证
数据库安装
添加域用户
在AD
中添加一个域用户
其他三个节点均添加此域用户
安装
3节点均需安装
选择全新安装
选择安装功能
根据实际需求选择安装功能,数据库引擎服务是必须的
实例配置:
三节点均使用默认实例配置
服务器配置
使用域用户登录
数据库引擎配置
服务器配置:选择混合模式登录,管理员添加本机管理员以及域用户
数据目录:
可以自定义数据文件存储位置
TempDB:
将TempDB的初始大小可以按实际需求设置初始大小
安装
Always On 配置
启用AlwaysOn
打开配置管理器
注意:开启后重启
SQL Server
服务,三个节点都需要打开。
创建数据库
连接到3个节点的数据库
创建2个测试数据库:ws21节点
创建测试数据:
1 | use jontydb |
备份数据库
对新建的2个数据库进行全备
备份类型选择完整
介质选项和备份选项按需求配置
可以配置备份文件存放位置,方便管理
新建可用性组
右键AlwaysOn高可用性,选择向导
可用性组名称,勾选数据库级别运行状况检测
选择要添加到可用性组的数据库
指定副本
点击添加副本,将ws12
、ws13
节点添加为副本,并设置自动故障转移和可读辅助副本
端点
使用私有网卡
备份首选项
选择任意副本
侦听器和只读路由稍后配置。
数据同步
选择完整的数据库和日志备份
,这里在域服务器创建了一个共享目录,可使用备份服务器同步
验证
运行下一步,完成配置
查看是否配置成功:
辅助节点的数据库已经同步
创建侦听器
DNS中可以看到侦听器已经添加进去了
面板查看
连接可用性组
使用创建的侦听器地址连接
测试可用性组
在ws11
节点插入数据
1 | select * from Employee |
在其他副本查看是否同步
故障转移测试
使用host
机器连接到可用性组
1 | select @@SERVERNAME -- 查看当前主机 |
当前主节点为:ws11
将ws11
节点关闭
测试查询:
可以看到主节点已经转移到ws12
,Always on
已经自动故障转移切换
我们在ws12
节点添加几条数据
1 | insert into Employee values('restart always on') |
重新启动ws11
节点,查看副本数据是否同步
节点已经恢复
查看故障节点ws11
的数据,可以看到已经恢复同步
手动故障转移
我们把ws11
节点关闭后,Always on
自动故障转移,现在主节点:ws12
我们可以手动切换回ws11
节点,右键可用性组,选择故障转移
选择ws11
为新的主副本
完成
刷新可用性组,可以看到已经切换到ws11
节点
读写分离 & 负载均衡
配置可读辅助副本
查看路由配置
1 | select * from master.sys.availability_replicas -- 查看可用性副本 |
配置可用性组时没有配置路由:
配置路由
1 | -- 建立读指针,为当前主节点上每个副本创建副本对应的TCP连接 |
查看可用性组属性:
可以看到路由已经配置完成,可以按照需求更改
测试:
可以看到查询的主机是在两个副本直接切换的,实现读均衡
1 | sqlcmd -S agvip1 -K ReadOnly -d jontydb -Q "select @@servername" |
测试写入操作
手动连接到ws12
只读节点,执行
1 | use employeedb |
可以看到,只读节点是不允许插入数据的
写在最后
- 本文是使用1个域控服务+3节点配置
AlwaysOn
高可用性组,基于Win Server2019
环境。
如果域控服务器挂了那不是就挂了?
这个时候又可以考虑再添加一个域控,用双域,域弄一个备份域。
域控服务器挂了 只是用户认证有问题,不影响 集群
3节点情况下配置了读写分离实现负载均衡,2节点则不必要,保证故障转移即可。
在写这篇教程之前配置了无域控双节点AlwaysOn,大概讲一下思路
双节点安装DNS,添加解析(相互配置包括本机),参考博客:https://www.cnblogs.com/DragonStart/p/8275182.html
后续安装故障转移群集和AlwaysOn配置操作都差不多。
- 添加新的节点,把之前节点做的操作执行一遍,包括配置DNS、加入域、加入群集,安装数据库、打开AlwaysOn,然后就是可用性组添加副本。
- 删除副本、可用性组,直接右键删除就好。
- 添加新的数据库到可用性组,记得全备。
AlwaysOn 到此结束