Create Azure Arc-enabled sqlmi Instance On-Premises k8s clsuter

本文最后更新于:2024年8月9日 晚上

Create Azure Arc-enabled SQLMI Instance On-Premises

Prerequisites & environments

ServersCPU & MEMRoleOS
node1.io4Core 16GBk8s mastercentos7.8
node2.io4Core 20GBk8s workercentos7.8
node3.io4Core 20GBk8s workercentos7.8

Setup k8s clsuter on-premises

Setup k8s clsuter on-premises on Ubuntu

Instructions

  • Start a sudo shell context and Execute setup-k8s-prereqs.sh script on each machine
  • Execute setup-k8s-master.shscript on the machine designated as Kubernetes master (not under sudo su as otherwise you’ll setup K8S .kube/config permissions for root)
  • After successful initialization of the Kubernetes master, follow the kubeadm join commands output by the setup script on each agent machine
  • Execute setup-volumes-agent.sh script on each agent machine to create volumes for local storage
  • Execute kubectl apply -f local-storage-provisioner.yaml against the Kubernetes cluster to create the local storage provisioner. This will create a Storage Class named “local-storage”.

Create data controller:

create-data-controller-indirect-cli

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
[root@node1 arc]# kubectl get storageclasses.storage.k8s.io
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE
local-storage kubernetes.io/no-provisioner Delete WaitForFirstConsumer false 39h
[root@node2 ~]# cat /etc/fstab | grep data
UUID=49d8fe73-dfc5-4bca-9006-7c3feebdf3fc /data xfs defaults 0 0
[root@node2 ~]# df -Th | grep '/data'
/dev/sdb1 xfs 500G 568M 500G 1% /data
tmpfs tmpfs 9.8G 4.0M 9.8G 1% /var/lib/kubelet/pods/5092d08d-a693-4550-b127-35ce23c261cc/volumes/kubernetes.io~empty-dir/data
[root@node2 ~]# ls /data/local-storage/
vol1 vol11 vol13 vol15 vol17 vol19 vol20 vol22 vol24 vol26 vol28 vol3
[root@node1 arc]# kubectl get pv -n local-storage
NAME CAPAClinuxY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE
local-pv-119ebf20 499Gi RWO Delete Available local-storage 23h
local-pv-1245a771 499Gi RWO Delete Available local-storage 23h
local-pv-13a47426 499Gi RWO Delete Bound arc/logs-metricsdb-0 local-storage 39h
[root@node1 arc]# az arcdata dc create --connectivity-mode indirect --name onpremises --k8s-namespace arc --subscription xxxx-xxxxx-xxxx-xxxx --resource-group azarclab --location eastus --storage-class local-storage --profile-name azure-arc-kubeadm --infrastructure onpremises --use-k8s
Subscription 'xxxx-xxxxx-xxxx-xxxx' not recognized.
To not see this warning, first login to Azure.

Using subscription 'xxxx-xxxxx-xxxx-xxxx'.

Monitoring administrator username:admin
Monitoring administrator password:
Confirm Monitoring administrator password:

Deploying data controller

NOTE: Data controller creation can take a significant amount of time depending on
configuration, network speed, and the number of nodes in the cluster.

Data controller successfully deployed.
{}
[root@node1 arc]# kubectl get datacontroller -n arc
NAME STATE
onpremises Ready
[root@node1 arc]# kubectl get pod -n arc | grep -v sql
NAME READY STATUS RESTARTS AGE
arc-bootstrapper-job-94x7m 0/1 Completed 0 14h
bootstrapper-cbf5bf94d-z9l95 1/1 Running 1 14h
control-f5d8t 2/2 Running 0 14h
controldb-0 2/2 Running 0 14h
logsdb-0 3/3 Running 0 14h
logsui-896pw 3/3 Running 3 14h
metricsdb-0 2/2 Running 2 14h
metricsdc-2lr8t 2/2 Running 0 14h
metricsdc-79h4t 2/2 Running 2 14h
metricsui-zjwnr 2/2 Running 0 14h

Create SQLMI instance

create-sql-managed-instance-with-azure-cli

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
PS C:\Users\hubo> az sql mi-arc create --name sql1 --k8s-namespace arc --use-k8s --time-zone Asia/Shanghai --agent-enabled true --dev --tier BusinessCritical --replicas 2
Deploying sql1 in namespace `arc`
sql1 is Ready
[root@node1 arc]# kubectl get pod -n arc
NAME READY STATUS RESTARTS AGE
arc-bootstrapper-job-94x7m 0/1 Completed 0 14h
bootstrapper-cbf5bf94d-z9l95 1/1 Running 1 14h
control-f5d8t 2/2 Running 0 14h
controldb-0 2/2 Running 0 14h
logsdb-0 3/3 Running 0 14h
logsui-896pw 3/3 Running 3 14h
metricsdb-0 2/2 Running 2 14h
metricsdc-2lr8t 2/2 Running 0 14h
metricsdc-79h4t 2/2 Running 2 14h
metricsui-zjwnr 2/2 Running 0 14h
sql1-0 4/4 Running 0 31m
sql1-1 4/4 Running 0 31m
sql1-ha-0 2/2 Running 0 32m

Connect with SQLMI insatnce

1
2
3
4
5
6
7
8
9
10
11
12
13
[root@node1 arc]# kubectl get sqlmi -n arc
NAME STATUS REPLICAS PRIMARY-ENDPOINT AGE
sql1 Ready 2 10.157.21.15,32697 22m
[root@node1 arc]# yum install mssql-tools -y
[root@node1 arc]# /opt/mssql-tools/bin/sqlcmd -S 10.157.21.15,32697 -Uadmin -Q 'select @@version'
Password:
--------------------------------------------------------
Microsoft Azure SQL Managed Instance - Azure Arc - 16.0.312.4243 (X64)
Jul 2 2022 13:16:53
Copyright (C) 2022 Microsoft Corporation
Business Critical (64-bit) on Linux (Ubuntu 20.04.4 LTS) <X64>

(1 rows affected)

Manager data with Azure Data Studio

Azure Data Studio:
https://docs.microsoft.com/en-us/sql/azure-data-studio/download-azure-data-studio?view=sql-server-ver16

kibana Dashboard:

Grafana Dashboard


Create Azure Arc-enabled sqlmi Instance On-Premises k8s clsuter
https://git.msft.vip/2022/09/15-Create-Azure-Arc-Enabled-SQLMI-Instance-On-Premises/
作者
Jas0n0ss
发布于
2022年9月15日
更新于
2024年8月9日
许可协议