怎么上传网站,在服务器上部署网站,精准客户截流软件,公司英文网站之前和很多群友聊天发现对2016的无域和负载均衡满心期待#xff0c;毕竟可以简单搭建而且可以不适用第三方负载均衡器#xff0c;SQL自己可以负载了。windows2016已经可以下载使用了#xff0c;那么这回终于可以揭开令人憧憬向往的AlwaysOn2016 负载均衡集群的神秘面纱了。 …之前和很多群友聊天发现对2016的无域和负载均衡满心期待毕竟可以简单搭建而且可以不适用第三方负载均衡器SQL自己可以负载了。windows2016已经可以下载使用了那么这回终于可以揭开令人憧憬向往的AlwaysOn2016 负载均衡集群的神秘面纱了。 本篇主要描述个人集群搭建中遇到的坑和一些注意事项以及2016无域负载均衡的简单体验测试。
搭建体验
基础环境 想要不使用域环境来搭建AlwaysON 必须使用windows 2016 和sql server2016 本篇我使用3台虚拟机主要是为了测试负载均衡否则2台就可以为了搭建的纯洁性我3台机器都是独立安装没有使用虚机复制。 遇到的问题 整体的系统故障转移集群AlwaysOn搭建都和2012和2014没有太大差别所以这里只介绍几个搭建时的特殊注意点。 1.因为没有域所以需要在”计算机属性“添加计算机的DNS后缀。 2.需要做域名解析域名解析运行——drivers每个节点都需要配置 3.图形化创建会出现问题导出脚本查看发现脚本不全 下面是创建AWO的脚本前提是各个节点已经还原的备份文件 注 以下脚本可以通过SSMS工具切换到SQLCMD模式运行 --- YOU MUST EXECUTE THE FOLLOWING SCRIPT IN SQLCMD MODE.
:Connect sql16node1IF (SELECT state FROM sys.endpoints WHERE name NHadr_endpoint) 0
BEGINALTER ENDPOINT [Hadr_endpoint] STATE STARTED
ENDGOuse [master]GOGRANT CONNECT ON ENDPOINT::[Hadr_endpoint] TO [NT Service\MSSQLSERVER]GO:Connect sql16node1IF EXISTS(SELECT * FROM sys.server_event_sessions WHERE nameAlwaysOn_health)
BEGINALTER EVENT SESSION [AlwaysOn_health] ON SERVER WITH (STARTUP_STATEON);
END
IF NOT EXISTS(SELECT * FROM sys.dm_xe_sessions WHERE nameAlwaysOn_health)
BEGINALTER EVENT SESSION [AlwaysOn_health] ON SERVER STATESTART;
ENDGO:Connect sql16node2IF (SELECT state FROM sys.endpoints WHERE name NHadr_endpoint) 0
BEGINALTER ENDPOINT [Hadr_endpoint] STATE STARTED
ENDGOuse [master]GOGRANT CONNECT ON ENDPOINT::[Hadr_endpoint] TO [NT Service\MSSQLSERVER]GO:Connect sql16node2IF EXISTS(SELECT * FROM sys.server_event_sessions WHERE nameAlwaysOn_health)
BEGINALTER EVENT SESSION [AlwaysOn_health] ON SERVER WITH (STARTUP_STATEON);
END
IF NOT EXISTS(SELECT * FROM sys.dm_xe_sessions WHERE nameAlwaysOn_health)
BEGINALTER EVENT SESSION [AlwaysOn_health] ON SERVER STATESTART;
ENDGO:Connect sql16node3IF (SELECT state FROM sys.endpoints WHERE name NHadr_endpoint) 0
BEGINALTER ENDPOINT [Hadr_endpoint] STATE STARTED
ENDGOuse [master]GOGRANT CONNECT ON ENDPOINT::[Hadr_endpoint] TO [NT Service\MSSQLSERVER]GO:Connect sql16node3IF EXISTS(SELECT * FROM sys.server_event_sessions WHERE nameAlwaysOn_health)
BEGINALTER EVENT SESSION [AlwaysOn_health] ON SERVER WITH (STARTUP_STATEON);
END
IF NOT EXISTS(SELECT * FROM sys.dm_xe_sessions WHERE nameAlwaysOn_health)
BEGINALTER EVENT SESSION [AlwaysOn_health] ON SERVER STATESTART;
ENDGO:Connect sql16node1USE [master]GOCREATE AVAILABILITY GROUP [KK_AG_2016]
WITH (AUTOMATED_BACKUP_PREFERENCE SECONDARY,
DB_FAILOVER OFF,
DTC_SUPPORT NONE)
FOR DATABASE [AWO_2016]
REPLICA ON NSQL16NODE1 WITH (ENDPOINT_URL NTCP://SQL16NODE1:5022, FAILOVER_MODE AUTOMATIC, AVAILABILITY_MODE SYNCHRONOUS_COMMIT, BACKUP_PRIORITY 50, SECONDARY_ROLE(ALLOW_CONNECTIONS ALL)),NSQL16NODE2 WITH (ENDPOINT_URL NTCP://SQL16NODE2:5022, FAILOVER_MODE AUTOMATIC, AVAILABILITY_MODE SYNCHRONOUS_COMMIT, BACKUP_PRIORITY 50, SECONDARY_ROLE(ALLOW_CONNECTIONS ALL)),NSQL16NODE3 WITH (ENDPOINT_URL NTCP://SQL16NODE3:5022, FAILOVER_MODE AUTOMATIC, AVAILABILITY_MODE SYNCHRONOUS_COMMIT, BACKUP_PRIORITY 50, SECONDARY_ROLE(ALLOW_CONNECTIONS ALL));GO------------这部分代码是图形化工具中缺失的步骤:Connect sql16node2ALTER AVAILABILITY GROUP [KK_AG_2016] JOIN;GO
ALTER DATABASE [AWO_2016] SET HADR AVAILABILITY GROUP [KK_AG_2016];
GO:Connect sql16node3ALTER AVAILABILITY GROUP [KK_AG_2016] JOIN;GO
ALTER DATABASE [AWO_2016] SET HADR AVAILABILITY GROUP [KK_AG_2016];
GO
创建监听
:Connect sql16node1USE [master]GOALTER AVAILABILITY GROUP [KK_AG_2016]
ADD LISTENER NL_KK_AWO2016 (
WITH IP
((N192.168.3.121, N255.255.255.0)
)
, PORT8000);GO
测试
高可用测试 简单的看起来与之前没有什么差别依然依赖故障转移群集仲裁的的方式与2012R2基本相同可以使用仲裁磁盘、仲裁文件夹或动态节点投票偶数个节点依然会动态分配投票权值得关注的是在windows2016的集群中添加了云仲裁这个云端配置先不说真是对于之前配置的跨机房的集群的福音。 负载均衡测试
配置负载均衡此处只是简单的做了一下主节点的负载
alter availability group kk_ag_2016
modify replica on sql16node1
with
(
primary_role
(
read_only_routing_list ((sql16node2,sql16node3),sql16node1)
)
)alter availability group kk_ag_2016
modify replica on Nsql16node1
with
(secondary_role (read_only_routing_url Ntcp://sql16node1.kk.com:1433)
)
go
alter availability group kk_ag_2016
modify replica on Nsql16node2
with
(secondary_role (read_only_routing_url Ntcp://sql16node2.kk.com:1433)
)
go
alter availability group kk_ag_2016
modify replica on Nsql16node3
with
(secondary_role (read_only_routing_url Ntcp://sql16node3.kk.com:1433)
)
go
测试的例子比较简单也没使用什么压力工具就直接用SSMS管理工具。 使用监听名称连接或监听IP加端口 另外必须在连接参数中指定ApplicationIntentReadOnly 开了5个窗口执行语句 使用profiler抓取结果 只是看看能不能负载均衡咋一看微软还真没骗人。但是要了解这只是只读副本的负载而不是写入也可以负载 另外要注意AlwaysOn的数据同步是有时间延迟的就算是同步模式
总结 文章只是简单的搭建和测试了一下没有做深入的研究也许会给有兴趣了解2016AlwaysOn集群的朋友一点帮助吧尤其是搭建过程网上找到的基本都是英文文档对于我这种看见鹰就发触的选手也算是一点福音吧。 2016的AlwaysOn可用组不需要域环境可以负载均衡还真的是有不小的吸引力。 产品服务
SQL专家云数据库智能运维平台
Moebius数据库多活集群
数据库协作运维服务
北京格瑞趋势科技有限公司是聚焦于数据服务的高新技术企业成立于2008年创始团队及核心技术人员来自微软和雅虎。微软数据平台金牌合作伙伴卫宁健康数据平台战略合作伙伴。通过产品服务双轮驱动的业务模式14年间累计服务4000客户覆盖互联网、市政、交通、电信、医疗、教育、电力、制造业等各个领域。