Skip to content

Commit 21c1430

Browse files
authored
Merge pull request #15882 from MicrosoftDocs/master
7/08 PM Publish
2 parents 23fac82 + 5e2d455 commit 21c1430

6 files changed

Lines changed: 76 additions & 80 deletions

File tree

docs/big-data-cluster/deploy-openshift.md

Lines changed: 45 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -32,32 +32,44 @@ This article outlines deployment steps that are specific to the OpenShift platfo
3232
> [!IMPORTANT]
3333
> Below pre-requisites must be performed by a OpenShift cluster admin (cluster-admin cluster role) that has sufficient permissions to create these cluster level objects. For more information on cluster roles in OpenShift see [Using RBAC to define and apply permissions](https://docs.openshift.com/container-platform/4.4/authentication/using-rbac.html).
3434
35-
1. Create a custom security context constraint (SCC) using the attached [`bdc-scc.yaml`](#bdc-sccyaml-file).
35+
1. Ensure the **pidsLimit** setting on the OpenShift is updated to accommodate SQL Server workloads. The default value in OpenShift is too low for production like workloads. We recommend a value of at least **4096**, but the optimal value will depend of the *max worker threads* setting in SQL Server and the number of CPU processors on the OpenShift host node.
36+
- To find out how to update **pidLimit** for your OpenShift cluster see [here]( https://github.com/openshift/machine-config-operator/blob/master/docs/ContainerRuntimeConfigDesign.md). Note that OpenShift versions before **4.3.5** had a defect causing the updated value to not take effect. Make sure you upgrade OpenShift to the latest version.
37+
- To help you compute the optimal value depending on your environment and planned SQL Server workloads, you can use the estimation and examples below:
3638

37-
```console
38-
oc apply -f bdc-scc.yaml
39-
```
39+
|Number of processors|Default max worker threads|Default workers per processor|Minimum pidsLimit value|
40+
|--------------------|--------------------------|-----------------------------|-----------------------|
41+
| 64 | 512 | 16 | 512 + (64 *16) = 1536 |
42+
| 128 | 512 | 32 | 512 + (128*32) = 4608 |
4043

41-
> [!NOTE]
42-
> The custom SCC for BDC is based on the built-in *nonroot* SCC in OpenShift, with additional permissions. To learn more about security context constraints in OpenShift see [Managing Security Context Constraints](https://docs.openshift.com/container-platform/4.3/authentication/managing-security-context-constraints.html). For a detailed information on what additional permissions are required for big data clusters on top of the *nonroot* SCC, download the whitepaper [here](https://aka.ms/sql-bdc-openshift-security).
44+
> [!NOTE]
45+
> Other processes (e.g. backups, CLR, Fulltext, SQLAgent) also add some overhead, so add a buffer to the estimated value.
46+
47+
2. Create a custom security context constraint (SCC) using the attached [`bdc-scc.yaml`](#bdc-sccyaml-file).
4348

44-
2. Create a namespace/project:
49+
```console
50+
oc apply -f bdc-scc.yaml
51+
```
52+
53+
> [!NOTE]
54+
> The custom SCC for BDC is based on the built-in *nonroot* SCC in OpenShift, with additional permissions. To learn more about security context constraints in OpenShift see [Managing Security Context Constraints](https://docs.openshift.com/container-platform/4.3/authentication/managing-security-context-constraints.html). For a detailed information on what additional permissions are required for big data clusters on top of the *nonroot* SCC, download the whitepaper [here](https://aka.ms/sql-bdc-openshift-security).
55+
56+
3. Create a namespace/project:
4557

4658
```console
4759
oc new-project <namespaceName>
4860
```
4961

50-
3. Assign the custom SCC to the service accounts for users within the namespace where BDC is deployed:
62+
4. Assign the custom SCC to the service accounts for users within the namespace where BDC is deployed:
5163

5264
```console
5365
oc adm policy add-scc-to-group bdc-scc system:serviceaccounts:<namespaceName>
5466
```
5567

56-
4. Assign appropriate permission to the user deploying BDC. Do one of the following.
68+
5. Assign appropriate permission to the user deploying BDC. Do one of the following.
5769

58-
1. If the user deploying BDC has cluster-admin role, proceed to [deploy big data cluster](#deploy-big-data-cluster).
70+
- If the user deploying BDC has cluster-admin role, proceed to [deploy big data cluster](#deploy-big-data-cluster).
5971

60-
1. If the user deploying BDC is a namespace admin, assign the user cluster-admin local role for the namespace created. This is the preferred option for the user deploying and managing the big data cluster to have namespace level admin permissions.
72+
- If the user deploying BDC is a namespace admin, assign the user cluster-admin local role for the namespace created. This is the preferred option for the user deploying and managing the big data cluster to have namespace level admin permissions.
6173

6274
```console
6375
oc adm policy add-role-to-user cluster-admin <deployingUser> -n <namespaceName>
@@ -73,10 +85,7 @@ This article outlines deployment steps that are specific to the OpenShift platfo
7385

7486
1. Install latest [azdata](deploy-install-azdata.md).
7587

76-
2. Clone one of the built-in configuration files for OpenShift.
77-
78-
1. If your target environment is OpenShift.
79-
2. Clone one of the built-in configuration files for OpenShift, depending on your target environment (OpenShift on premises or ARO) and deployment scenario. See this section [link](//TODO add link) on settings that are specific to OpenShift in the built-in configuration files. For more details on available configuration files see [deployment guidance](deployment-guidance.md).
88+
1. Clone one of the built-in configuration files for OpenShift, depending on your target environment (OpenShift on premises or ARO) and deployment scenario. See the *OpenShift specific settings in the deployment configuration files* section below for settings that are specific to OpenShift in the built-in configuration files. For more details on available configuration files see [deployment guidance](deployment-guidance.md).
8089

8190
List all the available built-in configuration files.
8291

@@ -96,24 +105,24 @@ This article outlines deployment steps that are specific to the OpenShift platfo
96105
azdata bdc config init --source aro-dev-test --target custom-openshift
97106
```
98107

99-
3. Customize the configuration files control.json and bdc.json. Here are some additional resources that guide you through the customizations supported for various use cases:
108+
1. Customize the configuration files control.json and bdc.json. Here are some additional resources that guide you through the customizations supported for various use cases:
100109

101-
1. [Storage](concept-data-persistence.md)
102-
1. [AD related settings](deploy-active-directory.md)
103-
1. [Other customizations](deployment-custom-configuration.md)
110+
- [Storage](concept-data-persistence.md)
111+
- [AD related settings](deploy-active-directory.md)
112+
- [Other customizations](deployment-custom-configuration.md)
104113

105114
> [!NOTE]
106115
> Integrating with Azure Active Directory for BDC is not supported, hence you can not use this authentication method when deploying on ARO.
107116
108-
4. Set [environment variables](deployment-guidance.md#env)
117+
1. Set [environment variables](deployment-guidance.md#env)
109118

110-
5. Deploy big data cluster
119+
1. Deploy big data cluster
111120

112121
```console
113122
azdata bdc create --config custom-openshift --accept-eula yes
114123
```
115124

116-
6. Upon successful deployment, you can log in and list the external cluster endpoints:
125+
1. Upon successful deployment, you can log in and list the external cluster endpoints:
117126

118127
```console
119128
azdata login -n mssql-cluster
@@ -122,7 +131,7 @@ This article outlines deployment steps that are specific to the OpenShift platfo
122131

123132
## OpenShift specific settings in the deployment configuration files
124133

125-
SQL Server 2019 CU5 introduces two feature switches to control the collection of pod and node metrics. These parameters are set to *false* by default in the built-in profiles for OpenShift since the monitoring containers require [privileged security context](https://www.openshift.com/blog/managing-sccs-in-openshift), which will relax some of the secuirty constraints for the namespace BDC is deployed on.
134+
SQL Server 2019 CU5 introduces two feature switches to control the collection of pod and node metrics. These parameters are set to *false* by default in the built-in profiles for OpenShift since the monitoring containers require [privileged security context](https://www.openshift.com/blog/managing-sccs-in-openshift), which will relax some of the security constraints for the namespace BDC is deployed on.
126135

127136
```json
128137
"security": {
@@ -137,13 +146,11 @@ The name of the default storage class in ARO is managed-premium (as opposed to A
137146
},
138147
"storage": {
139148
"data": {
140-
"className": "default",
141149
"className": "managed-premium",
142150
"accessMode": "ReadWriteOnce",
143151
"size": "15Gi"
144152
},
145153
"logs": {
146-
"className": "default",
147154
"className": "managed-premium",
148155
"accessMode": "ReadWriteOnce",
149156
"size": "10Gi"
@@ -157,7 +164,7 @@ apiVersion: security.openshift.io/v1
157164
kind: SecurityContextConstraints
158165
metadata:
159166
  annotations:
160-
    kubernetes.io/description: SQL Server BDC Nonroot scc is based on 'nonroot' scc plus additional capabilities.
167+
    kubernetes.io/description: SQL Server BDC custom scc is based on 'nonroot' scc plus additional capabilities.
161168
  generation: 2
162169
  name: bdc-scc
163170
allowHostDirVolumePlugin: false
@@ -168,30 +175,30 @@ allowHostPorts: false
168175
allowPrivilegeEscalation: true
169176
allowPrivilegedContainer: false
170177
allowedCapabilities:
171-
- SETUID
172-
- SETGID
173-
- CHOWN
174-
- SYS_PTRACE
178+
- SETUID
179+
- SETGID
180+
- CHOWN
181+
- SYS_PTRACE
175182
defaultAddCapabilities: null
176183
fsGroup:
177184
  type: RunAsAny
178185
readOnlyRootFilesystem: false
179186
requiredDropCapabilities:
180-
- KILL
181-
- MKNOD
187+
- KILL
188+
- MKNOD
182189
runAsUser:
183190
  type: MustRunAsNonRoot
184191
seLinuxContext:
185192
  type: MustRunAs
186193
supplementalGroups:
187194
  type: RunAsAny
188195
volumes:
189-
- configMap
190-
- downwardAPI
191-
- emptyDir
192-
- persistentVolumeClaim
193-
- projected
194-
- secret
196+
- configMap
197+
- downwardAPI
198+
- emptyDir
199+
- persistentVolumeClaim
200+
- projected
201+
- secret
195202
```
196203

197204
## Next steps

docs/big-data-cluster/deployment-guidance.md

Lines changed: 2 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -17,31 +17,13 @@ ms.technology: big-data-cluster
1717

1818
A SQL Server big data cluster is deployed as docker containers on a Kubernetes cluster. This is an overview of the setup and configuration steps:
1919

20-
- Set up a Kubernetes cluster on a single VM, cluster of VMs, or in Azure Kubernetes Service (AKS).
20+
- Set up a Kubernetes cluster on a single VM, cluster of VMs, in Azure Kubernetes Service (AKS), Red Hat OpenShift or in Azure Red Hat OpenShift (ARO).
2121
- Install the cluster configuration tool `azdata` on your client machine.
2222
- Deploy a SQL Server big data cluster in a Kubernetes cluster.
2323

24-
2524
## Supported platforms
2625

27-
This section explains platforms that are supported with BDC.
28-
29-
### Kubernetes platforms
30-
31-
|Platform|Supported versions|
32-
|---------|---------|
33-
|Kubernetes|BDC requires Kubernetes version minimum 1.13 for both server and client (kubectl). See [Kubernetes version and version skew support policy](https://kubernetes.io/docs/setup/release/version-skew-policy/) for Kubernetes version support policy.|
34-
|Azure Kubernetes Service (AKS)|BDC requires AKS version minimum 1.13.<br/>See [Supported Kubernetes versions in AKS](/azure/aks/supported-kubernetes-versions) for version support policy.|
35-
36-
> [!NOTE]
37-
> Note that the client and server Kubernetes versions should be within +1 or -1 minor version. For more information, see [Kubernetes release notes and version skew SKU policy)](https://github.com/kubernetes/community/blob/master/contributors/design-proposals/release/versioning.md#supported-releases-and-component-skew).
38-
39-
### Host OS for Kubernetes
40-
41-
|Platform|Supported versions|
42-
|---------|---------|
43-
|Red Hat Enterprise Linux|7.3, 7.4, 7.5, 7.6|
44-
|Ubuntu|16.04|
26+
See [Supported platforms](release-notes-big-data-cluster.md#supported-platforms) for a complete list of the various Kubernetes platforms validated for deploying SQL Server Big Data Clusters.
4527

4628
### SQL Server Editions
4729

@@ -51,8 +33,6 @@ This section explains platforms that are supported with BDC.
5133

5234
## <a id="prereqs"></a> Kubernetes
5335

54-
55-
5636
### <a id="kubernetes"></a> Kubernetes cluster setup
5737

5838
If you already have a Kubernetes cluster that meets the above prerequisites, then you can skip directly to the [deployment step](#deploy). This section assumes a basic understanding of Kubernetes concepts. For detailed information on Kubernetes, see the [Kubernetes documentation](https://kubernetes.io/docs/home).

docs/big-data-cluster/quickstart-big-data-cluster-deploy-aro.md

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -220,10 +220,10 @@ allowHostPorts: false
220220
allowPrivilegeEscalation: true
221221
allowPrivilegedContainer: false
222222
allowedCapabilities:
223-
- SETUID
224-
- SETGID
225-
- CHOWN
226-
- SYS_PTRACE
223+
- SETUID
224+
- SETGID
225+
- CHOWN
226+
- SYS_PTRACE
227227
apiVersion: security.openshift.io/v1
228228
defaultAddCapabilities: null
229229
fsGroup:
@@ -236,21 +236,21 @@ metadata:
236236
name: bdc-scc
237237
readOnlyRootFilesystem: false
238238
requiredDropCapabilities:
239-
- KILL
240-
- MKNOD
239+
- KILL
240+
- MKNOD
241241
runAsUser:
242242
type: MustRunAsNonRoot
243243
seLinuxContext:
244244
type: MustRunAs
245245
supplementalGroups:
246246
type: RunAsAny
247247
volumes:
248-
- configMap
249-
- downwardAPI
250-
- emptyDir
251-
- persistentVolumeClaim
252-
- projected
253-
- secret
248+
- configMap
249+
- downwardAPI
250+
- emptyDir
251+
- persistentVolumeClaim
252+
- projected
253+
- secret
254254
```
255255
256256
## Next steps

docs/database-engine/configure-windows/configure-the-max-degree-of-parallelism-server-configuration-option.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ ms.custom: contperfq4
3232

3333
- If the affinity mask option is not set to the default, it may restrict the number of processors available to [!INCLUDE[ssNoVersion](../../includes/ssnoversion-md.md)] on symmetric multiprocessing (SMP) systems.
3434

35-
- The **max degree of parallelism (MAXDOP)** limit is set per [task](../../relational-databases/system-dynamic-management-views/sys-dm-os-tasks-transact-sql.md). It is not a per [request](../../relational-databases/system-dynamic-management-views/sys-dm-exec-requests-transact-sql.md) or per query limit. This means that during a parallel query execution, a single request can spawn multiple tasks which are assigned to a scheduler. For more information, see the [Thread and Task Architecture Guide](../../relational-databases/thread-and-task-architecture-guide.md).
35+
- The **max degree of parallelism (MAXDOP)** limit is set per [task](../../relational-databases/system-dynamic-management-views/sys-dm-os-tasks-transact-sql.md). It is not a per [request](../../relational-databases/system-dynamic-management-views/sys-dm-exec-requests-transact-sql.md) or per query limit. This means that during a parallel query execution, a single request can spawn multiple tasks up to the MAXDOP limit, and each task will use one worker and one scheduler. For more information, see the *Scheduling parallel tasks* section in the [Thread and Task Architecture Guide](../../relational-databases/thread-and-task-architecture-guide.md).
3636

3737
### <a name="Recommendations"></a> Recommendations
3838

docs/relational-databases/replication/configure-distribution-availability-group.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ After a distribution database in the AG is configured based on the steps describ
6868
>[!NOTE]
6969
>Before executing any of replication stored procedures (for example - `sp_dropdistpublisher`, `sp_dropdistributiondb`, `sp_dropdistributor`, `sp_adddistributiondb`, `sp_adddistpublisher`) on secondary replica, make sure the replica is fully synchronized.
7070
71-
- All secondary replicas in a distribution database AG should be readable. If a secondary replica is not readable, distributor properties in SQL Server Management Studio on the particular secondary replica can not be accessed.
71+
- All secondary replicas in a distribution database AG should be readable. If a secondary replica is not readable, distributor properties in SQL Server Management Studio on the particular secondary replica can not be accessed, however replication will continue to work correctly.
7272
- All the nodes in the distribution database AG need to use the same domain account to run SQL Server Agent, and this domain account needs to have the same privilege on each node.
7373
- If any replication agents run under a proxy account, the proxy account needs to exist in every node in the distribution database AG and have the same privilege on each node.
7474
- Make changes to distributor or distribution database properties in all replicas participating in distribution database AG.

0 commit comments

Comments
 (0)