Azure Private Link متوفرة في باقتَي Scale وEnterprise. للترقية، انتقل إلى صفحة الخطط في Cloud Console.
يوضح هذا الدليل كيفية استخدام Azure Private Link لتوفير اتصال خاص عبر شبكة افتراضية بين Azure (بما في ذلك الخدمات المملوكة للعملاء وخدمات Microsoft Partner) وClickHouse Cloud. ويُبسّط Azure Private Link بنية الشبكة ويؤمّن الاتصال بين نقاط النهاية في Azure من خلال منع تعرّض البيانات للإنترنت العام.

تدعم Azure الاتصال عبر المناطق المختلفة من خلال Private Link. يتيح لك ذلك إنشاء اتصالات بين شبكات VNet الموجودة في مناطق مختلفة نُشرت فيها خدمات ClickHouse لديك.
يُرجى إكمال الخطوات التالية لتمكين Azure Private Link:
- احصل على الاسم المستعار لاتصال Azure في Private Link
- أنشئ Private Endpoint في Azure
- أضف معرّف مورد Private Endpoint إلى المؤسسة في ClickHouse Cloud
- أضف معرّف مورد Private Endpoint إلى قائمة السماح الخاصة بخدماتك
- الوصول إلى خدمة ClickHouse Cloud الخاصة بك باستخدام Private Link
تنبيه
يحاول ClickHouse تجميع خدماتك لإعادة استخدام خدمة Private Link المنشورة نفسها داخل منطقة Azure. ومع ذلك، لا يضمن هذا التجميع دائمًا، خصوصًا إذا كانت خدماتك موزعة على عدة مؤسسات في ClickHouse. إذا كان Private Link مُعدًّا بالفعل لخدمات أخرى في مؤسسة ClickHouse الخاصة بك، فغالبًا يمكنك تخطي معظم الخطوات بفضل هذا التجميع والانتقال مباشرةً إلى الخطوة الأخيرة: إضافة معرّف مورد Private Endpoint إلى قائمة السماح الخاصة بخدماتك.
يمكنك العثور على أمثلة Terraform في مستودع Terraform Provider الخاص بـ ClickHouse.
الحصول على الاسم المستعار لاتصال Azure الخاص بـ Private Link
الخيار 1: وحدة تحكم ClickHouse Cloud
في وحدة تحكم ClickHouse Cloud، افتح الخدمة التي تريد الاتصال بها عبر PrivateLink، ثم افتح قائمة Settings. انقر على زر إعداد Private Endpoint. دوّن Service name وDNS name، إذ سيُستخدمان عند إعداد Private Link.

دوّن Service name وDNS name، فستحتاج إليهما في الخطوات التالية.
الخيار 2: API
قبل البدء، ستحتاج إلى مفتاح API لـ ClickHouse Cloud. يمكنك إنشاء مفتاح جديد أو استخدام مفتاح حالي.
بمجرد حصولك على مفتاح API، عيّن متغيرات البيئة التالية قبل تشغيل أي أوامر:
REGION=<region code, use Azure format, for example: westus3>
PROVIDER=azure
KEY_ID=<Key ID>
KEY_SECRET=<Key secret>
ORG_ID=<set ClickHouse organization ID>
SERVICE_NAME=<Your ClickHouse service name>احصل على INSTANCE_ID الخاص بمثيل ClickHouse من خلال التصفية حسب المنطقة والمزوّد واسم الخدمة:
INSTANCE_ID=$(curl --silent --user "${KEY_ID:?}:${KEY_SECRET:?}" \
"https://api.clickhouse.cloud/v1/organizations/${ORG_ID:?}/services" | \
jq ".result[] | select (.region==\"${REGION:?}\" and .provider==\"${PROVIDER:?}\" and .name==\"${SERVICE_NAME:?}\") | .id " -r)احصل على الاسم المستعار لاتصال Azure واسم مضيف DNS الخاص بـ Private Link:
curl --silent --user "${KEY_ID:?}:${KEY_SECRET:?}" "https://api.clickhouse.cloud/v1/organizations/${ORG_ID:?}/services/${INSTANCE_ID:?}/privateEndpointConfig" | jq .result
{
"endpointServiceId": "production-westus3-0-0.xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.westus3.azure.privatelinkservice",
"privateDnsHostname": "xxxxxxxxxx.westus3.privatelink.azure.clickhouse.cloud"
}دوّن قيمة endpointServiceId. ستستخدمها في الخطوة التالية.
إنشاء Private Endpoint في Azure
في هذا القسم، سننشئ Private Endpoint في Azure. يمكنك استخدام Azure Portal أو Terraform.
الخيار 1: استخدام Azure Portal لإنشاء نقطة نهاية خاصة في Azure
في Azure Portal، افتح Private Link Center → Private Endpoints.

افتح مربع حوار إنشاء Private Endpoint بالنقر على الزر Create.

في الشاشة التالية، حدِّد الخيارات التالية:
- Subscription / Resource Group: يُرجى اختيار اشتراك Azure ومجموعة الموارد الخاصة بـ Private Endpoint.
- Name: عيّن اسمًا لـ Private Endpoint.
- Region: اختر المنطقة التي توجد فيها شبكة VNet المنشورة والتي ستتصل بـ ClickHouse Cloud عبر Private Link.
بعد إكمال الخطوات أعلاه، انقر على الزر Next: Resource.

حدِّد الخيار Connect to an Azure resource by resource ID or alias.
بالنسبة إلى Resource ID or alias، استخدم endpointServiceId الذي حصلت عليه من خطوة الحصول على الاسم المستعار لاتصال Azure لـ Private Link.
انقر على الزر Next: Virtual Network.

- Virtual network: اختر شبكة VNet التي تريد ربطها بـ ClickHouse Cloud باستخدام Private Link
- Subnet: اختر الشبكة الفرعية التي سيتم فيها إنشاء Private Endpoint
اختياري:
- Application security group: يمكنك إرفاق ASG بـ Private Endpoint واستخدامه في Network Security Groups لتصفية حركة مرور الشبكة من وإلى Private Endpoint.
انقر على الزر Next: DNS.

انقر على الزر Next: Tags.

اختياريًا، يمكنك إرفاق tags بـ Private Endpoint.
انقر على الزر Next: Review + create.

أخيرًا، انقر على الزر Create.

ستكون Connection status الخاصة بـ Private Endpoint التي تم إنشاؤها في حالة Pending. وستتغير إلى حالة Approved بمجرد إضافة Private Endpoint هذه إلى allow list الخاصة بالخدمة.
افتح network interface المرتبطة بـ Private Endpoint وانسخ Private IPv4 address (10.0.0.4 في هذا المثال)، إذ ستحتاج إلى هذه المعلومة في الخطوات التالية.

الخيار 2: استخدام Terraform لإنشاء Private Endpoint في Azure
استخدم القالب أدناه لإنشاء Private Endpoint باستخدام Terraform:
resource "azurerm_private_endpoint" "example_clickhouse_cloud" {
name = var.pe_name
location = var.pe_location
resource_group_name = var.pe_resource_group_name
subnet_id = var.pe_subnet_id
private_service_connection {
name = "test-pl"
private_connection_resource_alias = "<data from 'Obtain Azure connection alias for Private Link' step>"
is_manual_connection = true
}
}الحصول على معرّف مورد Private Endpoint
لاستخدام Private Link، تحتاج إلى إضافة Resource ID لاتصال Private Endpoint إلى قائمة السماح الخاصة بالـ service.
يظهر معرّف مورد Private Endpoint في Azure Portal. افتح Private Endpoint الذي تم إنشاؤه في الخطوة السابقة وانقر على JSON View:

انسخ الحقل id ذي المستوى الأعلى (Resource ID الخاص بـ private endpoint، بالتنسيق /subscriptions/.../providers/Microsoft.Network/privateEndpoints/<name>) — لا تستخدم حقول id المتداخلة داخل الكائن properties:
الطريقة المفضلة: استخدام Resource ID

الطريقة القديمة: استخدام resourceGUID
لا يزال بإمكانك استخدام resourceGUID للحفاظ على backward compatibility. ابحث عن الحقل resourceGuid وانسخ هذه القيمة:

إعداد DNS لـ Private Link
ستحتاج إلى إنشاء منطقة Private DNS (${location_code}.privatelink.azure.clickhouse.cloud) وربطها بـ VNet للوصول إلى الموارد عبر Private Link.
إنشاء منطقة Private DNS
الخيار 1: باستخدام Azure Portal
يُرجى اتباع هذا الدليل لإنشاء منطقة Azure private DNS باستخدام Azure Portal.
الخيار 2: باستخدام Terraform
استخدم قالب Terraform التالي لإنشاء منطقة Private DNS:
resource "azurerm_private_dns_zone" "clickhouse_cloud_private_link_zone" {
name = "${var.location}.privatelink.azure.clickhouse.cloud"
resource_group_name = var.resource_group_name
}إنشاء سجل DNS من نوع wildcard
أنشئ سجل wildcard ووجّهه إلى Private Endpoint الخاص بك:
الخيار 1: باستخدام Azure Portal
- افتح مجموعة الموارد
MyAzureResourceGroupوحدد منطقة Private DNS${region_code}.privatelink.azure.clickhouse.cloud. - حدد + Record set.
- في Name، اكتب
*. - في IP Address، اكتب عنوان IP الظاهر لـ Private Endpoint.
- حدد OK.

الخيار 2: باستخدام Terraform
استخدم قالب Terraform التالي لإنشاء سجل DNS من نوع wildcard:
resource "azurerm_private_dns_a_record" "example" {
name = "*"
zone_name = var.zone_name
resource_group_name = var.resource_group_name
ttl = 300
records = ["10.0.0.4"]
}إنشاء رابط شبكة افتراضية
لربط منطقة Private DNS بشبكة افتراضية، ستحتاج إلى إنشاء رابط شبكة افتراضية.
الخيار 1: باستخدام Azure Portal
يُرجى اتباع هذا الدليل لربط الشبكة الافتراضية بـ منطقة Private DNS الخاصة بك.
الخيار 2: باستخدام Terraform
تحتاج إلى توجيه "DNS name"، المأخوذ من خطوة الحصول على الاسم المستعار لاتصال Azure لـ Private Link، إلى عنوان IP الخاص بـ Private Endpoint. ويضمن ذلك أن تتمكن الخدمات/المكونات داخل VPC/الشبكة لديك من حلّه بشكل صحيح.
تحقّق من إعداد DNS
يجب توجيه النطاق xxxxxxxxxx.westus3.privatelink.azure.clickhouse.cloud إلى عنوان IP الخاص بـ Private Endpoint. (10.0.0.4 في هذا المثال).
nslookup xxxxxxxxxx.westus3.privatelink.azure.clickhouse.cloud.
Server: 127.0.0.53
Address: 127.0.0.53#53
Non-authoritative answer:
Name: xxxxxxxxxx.westus3.privatelink.azure.clickhouse.cloud
Address: 10.0.0.4أضِف معرّف مورد Private Endpoint إلى المؤسسة الخاصة بك في ClickHouse Cloud
الخيار 1: وحدة تحكم ClickHouse Cloud
لإضافة نقطة نهاية إلى المؤسسة، انتقل إلى خطوة إضافة معرّف مورد Private Endpoint إلى قائمة السماح الخاصة بخدماتك. تؤدي إضافة معرّف مورد Private Endpoint إلى قائمة السماح الخاصة بالخدمات باستخدام وحدة تحكم ClickHouse Cloud إلى إضافته تلقائيًا إلى المؤسسة.
لإزالة نقطة نهاية، افتح Organization details -> Private Endpoints وانقر على زر الحذف لإزالة نقطة النهاية.

الخيار 2: API
عيّن متغيرات البيئة التالية قبل تنفيذ أي أوامر:
PROVIDER=azure
KEY_ID=<Key ID>
KEY_SECRET=<Key secret>
ORG_ID=<set ClickHouse organization ID>
ENDPOINT_ID=<Private Endpoint Resource ID>
REGION=<region code, use Azure format>عيّن متغير البيئة ENDPOINT_ID باستخدام البيانات الواردة في خطوة الحصول على معرّف مورد نقطة النهاية الخاصة.
شغّل الأمر التالي لإضافة Private Endpoint:
cat <<EOF | tee pl_config_org.json
{
"privateEndpoints": {
"add": [
{
"cloudProvider": "azure",
"id": "${ENDPOINT_ID:?}",
"description": "Azure private endpoint",
"region": "${REGION:?}"
}
]
}
}
EOFيمكنك أيضًا تشغيل الأمر التالي لإزالة Private Endpoint:
cat <<EOF | tee pl_config_org.json
{
"privateEndpoints": {
"remove": [
{
"cloudProvider": "azure",
"id": "${ENDPOINT_ID:?}",
"region": "${REGION:?}"
}
]
}
}
EOFبعد إضافة Private Endpoint أو إزالته، نفِّذ الأمر التالي لتطبيق التغيير على مؤسستك:
curl --silent --user "${KEY_ID:?}:${KEY_SECRET:?}" -X PATCH -H "Content-Type: application/json" "https://api.clickhouse.cloud/v1/organizations/${ORG_ID:?}" -d @pl_config_org.jsonأضِف معرّف مورد Private Endpoint إلى قائمة السماح لخدماتك
افتراضيًا، لا تكون خدمة ClickHouse Cloud متاحة عبر اتصال Private Link حتى إذا تمت الموافقة على اتصال Private Link وإنشاؤه. يجب عليك إضافة معرّف مورد Private Endpoint صراحةً لكل خدمة تريد إتاحتها باستخدام Private Link.
الخيار 1: وحدة تحكم ClickHouse Cloud
في وحدة تحكم ClickHouse Cloud، افتح الخدمة التي تريد الاتصال بها عبر PrivateLink، ثم انتقل إلى الإعدادات. أدخل Resource ID الذي حصلت عليه من الخطوة السابقة.

الخيار 2: API
عيّن متغيرات البيئة التالية قبل تنفيذ أي أوامر:
PROVIDER=azure
KEY_ID=<Key ID>
KEY_SECRET=<Key secret>
ORG_ID=<set ClickHouse organization ID>
ENDPOINT_ID=<Private Endpoint Resource ID>
INSTANCE_ID=<Instance ID>نفّذ هذا لكل خدمة يجب أن تكون متاحة عبر Private Link.
شغّل الأمر التالي لإضافة Private Endpoint إلى قائمة السماح الخاصة بالخدمات:
cat <<EOF | tee pl_config.json
{
"privateEndpointIds": {
"add": [
"${ENDPOINT_ID:?}"
]
}
}
EOFيمكنك أيضًا تنفيذ الأمر التالي لإزالة Private Endpoint من قائمة السماح الخاصة بالخدمات:
cat <<EOF | tee pl_config.json
{
"privateEndpointIds": {
"remove": [
"${ENDPOINT_ID:?}"
]
}
}
EOFبعد إضافة Private Endpoint إلى قائمة السماح للخدمات أو إزالته منها، شغّل الأمر التالي لتطبيق هذا التغيير على مؤسستك:
curl --silent --user "${KEY_ID:?}:${KEY_SECRET:?}" -X PATCH -H "Content-Type: application/json" "https://api.clickhouse.cloud/v1/organizations/${ORG_ID:?}/services/${INSTANCE_ID:?}" -d @pl_config.json | jqالوصول إلى خدمة ClickHouse Cloud الخاصة بك باستخدام Private Link
تتضمن كل خدمة مفعَّل لها Private Link نقطة نهاية عامة وأخرى خاصة. وللاتصال باستخدام Private Link، تحتاج إلى استخدام نقطة نهاية خاصة، وستكون هذه هي privateDnsHostnameAPI أو اسم DNSconsole المأخوذ من الحصول على الاسم المستعار لاتصال Azure لـ Private Link.
الحصول على اسم مضيف DNS الخاص
الخيار 1: وحدة تحكم ClickHouse Cloud
في وحدة تحكم ClickHouse Cloud، انتقل إلى الإعدادات. انقر على الزر إعداد Private Endpoint. في اللوحة الجانبية التي تفتح، انسخ اسم DNS.

الخيار 2: API
عيّن متغيرات البيئة التالية قبل تشغيل أي أوامر:
KEY_ID=<Key ID>
KEY_SECRET=<Key secret>
ORG_ID=<set ClickHouse organization ID>
INSTANCE_ID=<Instance ID>نفّذ الأمر التالي:
curl --silent --user "${KEY_ID:?}:${KEY_SECRET:?}" "https://api.clickhouse.cloud/v1/organizations/${ORG_ID:?}/services/${INSTANCE_ID:?}/privateEndpointConfig" | jq .resultمن المفترض أن تتلقى استجابةً مشابهة لما يلي:
{
...
"privateDnsHostname": "xxxxxxx.<region code>.privatelink.azure.clickhouse.cloud"
}في هذا المثال، سيُوجَّه الاتصال باسم المضيف xxxxxxx.region_code.privatelink.azure.clickhouse.cloud عبر Private Link. في المقابل، سيُوجَّه xxxxxxx.region_code.azure.clickhouse.cloud عبر الإنترنت.
استخدم privateDnsHostname للاتصال بخدمة ClickHouse Cloud الخاصة بك عبر Private Link.
استكشاف الأخطاء وإصلاحها
اختبار إعدادات DNS
شغّل الأمر التالي:
nslookup <dns name>حيث يشير "اسم DNS" إلى privateDnsHostnameAPI أو DNS nameconsole من الحصول على الاسم المستعار لاتصال Azure لـ Private Link
يُفترض أن تتلقى الاستجابة التالية:
Non-authoritative answer:
Name: <dns name>
Address: 10.0.0.4أعاد النظير تعيين الاتصال
على الأرجح، لم تتم إضافة معرّف مورد Private Endpoint إلى قائمة السماح الخاصة بالخدمة. راجع خطوة إضافة معرّف مورد Private Endpoint إلى قائمة السماح الخاصة بخدماتك.
Private Endpoint في حالة انتظار
على الأرجح، لم تتم إضافة معرّف مورد Private Endpoint إلى قائمة السماح الخاصة بالخدمة. ارجع إلى خطوة إضافة معرّف مورد Private Endpoint إلى قائمة السماح الخاصة بخدماتك.
اختبار الاتصال
إذا واجهت مشكلات عند الاتصال باستخدام Private Link، فتحقّق من إمكانية الاتصال باستخدام openssl. تأكّد من أن حالة نقطة نهاية Private Link هي Accepted.
يُفترض أن يتمكّن OpenSSL من الاتصال (ابحث عن CONNECTED في المخرجات). ومن المتوقع ظهور errno=104.
openssl s_client -connect abcd.westus3.privatelink.azure.clickhouse.cloud:9440CONNECTED(00000003)
write:errno=104
---
no peer certificate available
---
No client certificate CA names sent
---
SSL handshake has read 0 bytes and written 335 bytes
Verification: OK
---
New, (NONE), Cipher is (NONE)
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
Early data was not sent
Verify return code: 0 (ok)التحقق من عوامل تصفية نقطة النهاية الخاصة
عيّن متغيرات البيئة التالية قبل تشغيل أي أوامر:
KEY_ID=<Key ID>
KEY_SECRET=<Key secret>
ORG_ID=<please set ClickHouse organization ID>
INSTANCE_ID=<Instance ID>شغّل الأمر التالي للتحقق من مرشحات Private Endpoint:
curl --silent --user "${KEY_ID:?}:${KEY_SECRET:?}" -X GET -H "Content-Type: application/json" "https://api.clickhouse.cloud/v1/organizations/${ORG_ID:?}/services/${INSTANCE_ID:?}" | jq .result.privateEndpointIdsمزيد من المعلومات
لمزيد من المعلومات حول Azure Private Link، يُرجى زيارة azure.microsoft.com/en-us/products/private-link.