From a06355cff155a0badf00e73f0f3f7b810bbecc36 Mon Sep 17 00:00:00 2001 From: OpenTelekomCloud Proposal Bot Date: Tue, 22 Nov 2022 07:39:53 +0000 Subject: [PATCH] Update content --- .../images/en-us_image_0000001287445428.png | Bin 0 -> 10765 bytes .../images/en-us_image_0000001287445440.png | Bin 0 -> 1004 bytes .../images/en-us_image_0000001287445448.png | Bin 0 -> 1004 bytes .../images/en-us_image_0000001287445456.png | Bin 0 -> 1004 bytes .../images/en-us_image_0000001287445460.jpg | Bin 0 -> 744 bytes .../images/en-us_image_0000001287605360.png | Bin 0 -> 1004 bytes .../images/en-us_image_0000001287605372.png | Bin 0 -> 1004 bytes .../images/en-us_image_0000001287765296.png | Bin 0 -> 1004 bytes .../images/en-us_image_0000001287765312.png | Bin 0 -> 1004 bytes .../images/en-us_image_0000001287765320.png | Bin 0 -> 1004 bytes .../images/en-us_image_0000001287765328.jpg | Bin 0 -> 752 bytes .../images/en-us_image_0000001287924936.png | Bin 0 -> 1004 bytes .../images/en-us_image_0000001287960790.jpg | Bin 0 -> 744 bytes .../images/en-us_image_0000001288144356.png | Bin 0 -> 271 bytes .../images/en-us_image_0000001288301616.png | Bin 0 -> 382 bytes .../images/en-us_image_0000001288319004.png | Bin 0 -> 51245 bytes .../images/en-us_image_0000001288469984.png | Bin 0 -> 51814 bytes .../images/en-us_image_0000001340205081.png | Bin 0 -> 1004 bytes .../images/en-us_image_0000001340205085.jpg | Bin 0 -> 740 bytes .../images/en-us_image_0000001340285285.png | Bin 0 -> 1004 bytes .../images/en-us_image_0000001340285301.png | Bin 0 -> 1004 bytes .../images/en-us_image_0000001340285305.png | Bin 0 -> 1004 bytes .../images/en-us_image_0000001340285313.png | Bin 0 -> 418 bytes .../images/en-us_image_0000001340285317.jpg | Bin 0 -> 744 bytes .../images/en-us_image_0000001340320673.jpg | Bin 0 -> 744 bytes .../images/en-us_image_0000001340405149.png | Bin 0 -> 1004 bytes .../images/en-us_image_0000001340405153.png | Bin 0 -> 1004 bytes .../images/en-us_image_0000001340405157.png | Bin 0 -> 1004 bytes .../images/en-us_image_0000001340564653.png | Bin 0 -> 401 bytes .../images/en-us_image_0000001340638257.png | Bin 0 -> 53751 bytes .../images/en-us_image_0000001340680421.jpg | Bin 0 -> 744 bytes .../images/en-us_image_0000001340704041.png | Bin 0 -> 1004 bytes .../images/en-us_image_0000001340709641.png | Bin 0 -> 29653 bytes umn/source/change_history.rst | 87 ++++++ ...n_dcs_be_accessed_over_public_networks.rst | 8 + ...figuration_parameters_of_dcs_instances.rst | 8 + ...ecover_data_from_deleted_dcs_instances.rst | 12 + ...ter_mode_support_native_redis_clusters.rst | 8 + ...dcs_instances_support_cross-vpc_access.rst | 35 +++ ...stance_where_can_i_obtain_the_password.rst | 10 + ...ort_common_redis_clients_such_as_jedis.rst | 8 + .../does_dcs_support_data_persistence.rst | 8 + ..._data_read_write_in_multiple_databases.rst | 10 + ...in_synchronized_with_master_cache_node.rst | 13 + ..._select_and_configure_a_security_group.rst | 32 +++ umn/source/faqs/index.rst | 48 ++++ ...redis_if_i_already_have_a_dcs_instance.rst | 8 + ...at_is_the_default_data_eviction_policy.rst | 40 +++ ..._client_and_the_dcs_instance_times_out.rst | 12 + ...i_back_up_or_scale_up_my_dcs_instances.rst | 9 + ...ilable_while_they_are_in_running_state.rst | 16 ++ ...unused_dcs_instances_greater_than_zero.rst | 10 + ...her_than_the_instance_available_memory.rst | 10 + .../accessing_a_dcs_redis_instance.rst | 155 ++++++++++ .../creating_a_dcs_instance.rst | 125 ++++++++ umn/source/getting_started/index.rst | 20 ++ .../setting_up_environments.rst | 45 +++ .../viewing_details_of_a_dcs_instance.rst | 87 ++++++ umn/source/glossary.rst | 8 + umn/source/index.rst | 10 + .../accessing_dcs/how_to_access_dcs.rst | 16 ++ .../introduction/accessing_dcs/index.rst | 18 ++ .../accessing_dcs/related_services.rst | 40 +++ .../accessing_dcs/user_permissions.rst | 14 + umn/source/introduction/advantages.rst | 24 ++ .../introduction/application_scenarios.rst | 26 ++ umn/source/introduction/dcs.rst | 49 ++++ .../dcs_instance_specifications.rst | 72 +++++ umn/source/introduction/index.rst | 24 ++ .../redis_command_compatibility.rst | 271 ++++++++++++++++++ umn/source/monitoring/dcs_metrics.rst | 258 +++++++++++++++++ umn/source/monitoring/index.rst | 20 ++ ...tting_alarm_rules_for_critical_metrics.rst | 79 +++++ umn/source/monitoring/viewing_dcs_metrics.rst | 29 ++ .../configuring_a_backup_policy.rst | 58 ++++ .../index.rst | 20 ++ .../manually_backing_up_a_dcs_instance.rst | 38 +++ .../overview.rst | 97 +++++++ .../restoring_a_dcs_instance.rst | 39 +++ .../changing_instance_passwords.rst | 40 +++ .../configuring_redis-specific_parameters.rst | 161 +++++++++++ .../deleting_dcs_instances.rst | 70 +++++ umn/source/operation_guide/index.rst | 32 +++ .../managing_background_tasks.rst | 45 +++ ...g_an_instances_maintenance_time_window.rst | 42 +++ .../modifying_an_instances_security_group.rst | 42 +++ .../modifying_dcs_instance_specifications.rst | 55 ++++ .../restarting_dcs_instances.rst | 48 ++++ .../starting_dcs_instances.rst | 36 +++ 89 files changed, 2605 insertions(+) create mode 100644 umn/source/_static/images/en-us_image_0000001287445428.png create mode 100644 umn/source/_static/images/en-us_image_0000001287445440.png create mode 100644 umn/source/_static/images/en-us_image_0000001287445448.png create mode 100644 umn/source/_static/images/en-us_image_0000001287445456.png create mode 100644 umn/source/_static/images/en-us_image_0000001287445460.jpg create mode 100644 umn/source/_static/images/en-us_image_0000001287605360.png create mode 100644 umn/source/_static/images/en-us_image_0000001287605372.png create mode 100644 umn/source/_static/images/en-us_image_0000001287765296.png create mode 100644 umn/source/_static/images/en-us_image_0000001287765312.png create mode 100644 umn/source/_static/images/en-us_image_0000001287765320.png create mode 100644 umn/source/_static/images/en-us_image_0000001287765328.jpg create mode 100644 umn/source/_static/images/en-us_image_0000001287924936.png create mode 100644 umn/source/_static/images/en-us_image_0000001287960790.jpg create mode 100644 umn/source/_static/images/en-us_image_0000001288144356.png create mode 100644 umn/source/_static/images/en-us_image_0000001288301616.png create mode 100644 umn/source/_static/images/en-us_image_0000001288319004.png create mode 100644 umn/source/_static/images/en-us_image_0000001288469984.png create mode 100644 umn/source/_static/images/en-us_image_0000001340205081.png create mode 100644 umn/source/_static/images/en-us_image_0000001340205085.jpg create mode 100644 umn/source/_static/images/en-us_image_0000001340285285.png create mode 100644 umn/source/_static/images/en-us_image_0000001340285301.png create mode 100644 umn/source/_static/images/en-us_image_0000001340285305.png create mode 100644 umn/source/_static/images/en-us_image_0000001340285313.png create mode 100644 umn/source/_static/images/en-us_image_0000001340285317.jpg create mode 100644 umn/source/_static/images/en-us_image_0000001340320673.jpg create mode 100644 umn/source/_static/images/en-us_image_0000001340405149.png create mode 100644 umn/source/_static/images/en-us_image_0000001340405153.png create mode 100644 umn/source/_static/images/en-us_image_0000001340405157.png create mode 100644 umn/source/_static/images/en-us_image_0000001340564653.png create mode 100644 umn/source/_static/images/en-us_image_0000001340638257.png create mode 100644 umn/source/_static/images/en-us_image_0000001340680421.jpg create mode 100644 umn/source/_static/images/en-us_image_0000001340704041.png create mode 100644 umn/source/_static/images/en-us_image_0000001340709641.png create mode 100644 umn/source/change_history.rst create mode 100644 umn/source/faqs/can_dcs_be_accessed_over_public_networks.rst create mode 100644 umn/source/faqs/can_i_modify_configuration_parameters_of_dcs_instances.rst create mode 100644 umn/source/faqs/can_i_recover_data_from_deleted_dcs_instances.rst create mode 100644 umn/source/faqs/do_dcs_instances_in_cluster_mode_support_native_redis_clusters.rst create mode 100644 umn/source/faqs/do_dcs_instances_support_cross-vpc_access.rst create mode 100644 umn/source/faqs/do_i_need_to_enter_a_password_when_accessing_a_dcs_instance_where_can_i_obtain_the_password.rst create mode 100644 umn/source/faqs/does_dcs_support_common_redis_clients_such_as_jedis.rst create mode 100644 umn/source/faqs/does_dcs_support_data_persistence.rst create mode 100644 umn/source/faqs/does_dcs_support_data_read_write_in_multiple_databases.rst create mode 100644 umn/source/faqs/does_standby_cache_node_remain_synchronized_with_master_cache_node.rst create mode 100644 umn/source/faqs/how_to_select_and_configure_a_security_group.rst create mode 100644 umn/source/faqs/index.rst create mode 100644 umn/source/faqs/should_i_install_redis_if_i_already_have_a_dcs_instance.rst create mode 100644 umn/source/faqs/what_is_the_default_data_eviction_policy.rst create mode 100644 umn/source/faqs/what_should_i_do_if_the_connection_between_my_redis_client_and_the_dcs_instance_times_out.rst create mode 100644 umn/source/faqs/why_cant_i_back_up_or_scale_up_my_dcs_instances.rst create mode 100644 umn/source/faqs/why_do_my_dcs_instances_sometimes_become_unavailable_while_they_are_in_running_state.rst create mode 100644 umn/source/faqs/why_is_available_memory_of_unused_dcs_instances_less_than_total_memory_why_is_memory_usage_of_unused_dcs_instances_greater_than_zero.rst create mode 100644 umn/source/faqs/why_is_the_used_instance_memory_displayed_on_cloud_eye_console_slightly_higher_than_the_instance_available_memory.rst create mode 100644 umn/source/getting_started/accessing_a_dcs_redis_instance.rst create mode 100644 umn/source/getting_started/creating_a_dcs_instance.rst create mode 100644 umn/source/getting_started/index.rst create mode 100644 umn/source/getting_started/setting_up_environments.rst create mode 100644 umn/source/getting_started/viewing_details_of_a_dcs_instance.rst create mode 100644 umn/source/glossary.rst create mode 100644 umn/source/introduction/accessing_dcs/how_to_access_dcs.rst create mode 100644 umn/source/introduction/accessing_dcs/index.rst create mode 100644 umn/source/introduction/accessing_dcs/related_services.rst create mode 100644 umn/source/introduction/accessing_dcs/user_permissions.rst create mode 100644 umn/source/introduction/advantages.rst create mode 100644 umn/source/introduction/application_scenarios.rst create mode 100644 umn/source/introduction/dcs.rst create mode 100644 umn/source/introduction/dcs_instance_specifications.rst create mode 100644 umn/source/introduction/index.rst create mode 100644 umn/source/introduction/redis_command_compatibility.rst create mode 100644 umn/source/monitoring/dcs_metrics.rst create mode 100644 umn/source/monitoring/index.rst create mode 100644 umn/source/monitoring/setting_alarm_rules_for_critical_metrics.rst create mode 100644 umn/source/monitoring/viewing_dcs_metrics.rst create mode 100644 umn/source/operation_guide/backing_up_and_restoring_dcs_instances/configuring_a_backup_policy.rst create mode 100644 umn/source/operation_guide/backing_up_and_restoring_dcs_instances/index.rst create mode 100644 umn/source/operation_guide/backing_up_and_restoring_dcs_instances/manually_backing_up_a_dcs_instance.rst create mode 100644 umn/source/operation_guide/backing_up_and_restoring_dcs_instances/overview.rst create mode 100644 umn/source/operation_guide/backing_up_and_restoring_dcs_instances/restoring_a_dcs_instance.rst create mode 100644 umn/source/operation_guide/changing_instance_passwords.rst create mode 100644 umn/source/operation_guide/configuring_redis-specific_parameters.rst create mode 100644 umn/source/operation_guide/deleting_dcs_instances.rst create mode 100644 umn/source/operation_guide/index.rst create mode 100644 umn/source/operation_guide/managing_background_tasks.rst create mode 100644 umn/source/operation_guide/modifying_an_instances_maintenance_time_window.rst create mode 100644 umn/source/operation_guide/modifying_an_instances_security_group.rst create mode 100644 umn/source/operation_guide/modifying_dcs_instance_specifications.rst create mode 100644 umn/source/operation_guide/restarting_dcs_instances.rst create mode 100644 umn/source/operation_guide/starting_dcs_instances.rst diff --git a/umn/source/_static/images/en-us_image_0000001287445428.png b/umn/source/_static/images/en-us_image_0000001287445428.png new file mode 100644 index 0000000000000000000000000000000000000000..00d203777060245c9dba2d40ea10ca83fdf92c0f GIT binary patch literal 10765 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 literal 0 HcmV?d00001 diff --git a/umn/source/_static/images/en-us_image_0000001287445440.png b/umn/source/_static/images/en-us_image_0000001287445440.png new file mode 100644 index 0000000000000000000000000000000000000000..1909444d23d92a3a6566bca91ce065d14dbda919 GIT binary patch literal 1004 zcmeAS@N?(olHy`uVBq!ia0vp^Vj#@H3?x5i&EaHVU}gyL32_B-i2;l_022maMg=TL zfE5PVkN`UjaKHd37;wP=HyH51052HufdM}l2!Meg7zlxZFc^q{fvBjc7#N6yfrNyF zBp676fwZ)=3>e7D%F2O(yu7@Ef`TF#C@Co^gMo^QimIxrnwpwA7-(o{XliO|X=!PL zfsT%juCA`0o}RwGz5y5*8X6iI85tWJo0yoGnwpxKnVFlLTUc0FT3T9JSy@|K+kkCcvmzTGP*6~CaBxUSNN8wiSXfv@L_}m{WK>jCbaZq~OiWx{Tzq_dLPA1fVq$V~a!N`{ zYHDg)T3SX%MrLMaR#sMac6M%VZeCtqetv#oVPR2GQAtTjX=!O$Sy@FzMP+4WRaI3@ zO-*fWZGC-xLqkJTQ&V$ub4yE0TU%RudwXYRXIEEOPft&8Z*PBp|AYw>CQX_&dGh3` zQ>RX!K7GcF8M9{1nmv2=+_`h-&!4|w!GcAL7A;=9cQ>uk5sDH4e!pN zM?2c%!f)$Moqn;JbAR{#-LH2<-aWd<6M=_Uy)Vz z>Gb1s+(~DB#NsS6_)g4`cRj>@b~4MGr%TsH2#HlrdJFVdQ&MBb@08(^UA^-pY literal 0 HcmV?d00001 diff --git a/umn/source/_static/images/en-us_image_0000001287445448.png b/umn/source/_static/images/en-us_image_0000001287445448.png new file mode 100644 index 0000000000000000000000000000000000000000..1909444d23d92a3a6566bca91ce065d14dbda919 GIT binary patch literal 1004 zcmeAS@N?(olHy`uVBq!ia0vp^Vj#@H3?x5i&EaHVU}gyL32_B-i2;l_022maMg=TL zfE5PVkN`UjaKHd37;wP=HyH51052HufdM}l2!Meg7zlxZFc^q{fvBjc7#N6yfrNyF zBp676fwZ)=3>e7D%F2O(yu7@Ef`TF#C@Co^gMo^QimIxrnwpwA7-(o{XliO|X=!PL zfsT%juCA`0o}RwGz5y5*8X6iI85tWJo0yoGnwpxKnVFlLTUc0FT3T9JSy@|K+kkCcvmzTGP*6~CaBxUSNN8wiSXfv@L_}m{WK>jCbaZq~OiWx{Tzq_dLPA1fVq$V~a!N`{ zYHDg)T3SX%MrLMaR#sMac6M%VZeCtqetv#oVPR2GQAtTjX=!O$Sy@FzMP+4WRaI3@ zO-*fWZGC-xLqkJTQ&V$ub4yE0TU%RudwXYRXIEEOPft&8Z*PBp|AYw>CQX_&dGh3` zQ>RX!K7GcF8M9{1nmv2=+_`h-&!4|w!GcAL7A;=9cQ>uk5sDH4e!pN zM?2c%!f)$Moqn;JbAR{#-LH2<-aWd<6M=_Uy)Vz z>Gb1s+(~DB#NsS6_)g4`cRj>@b~4MGr%TsH2#HlrdJFVdQ&MBb@08(^UA^-pY literal 0 HcmV?d00001 diff --git a/umn/source/_static/images/en-us_image_0000001287445456.png b/umn/source/_static/images/en-us_image_0000001287445456.png new file mode 100644 index 0000000000000000000000000000000000000000..1909444d23d92a3a6566bca91ce065d14dbda919 GIT binary patch literal 1004 zcmeAS@N?(olHy`uVBq!ia0vp^Vj#@H3?x5i&EaHVU}gyL32_B-i2;l_022maMg=TL zfE5PVkN`UjaKHd37;wP=HyH51052HufdM}l2!Meg7zlxZFc^q{fvBjc7#N6yfrNyF zBp676fwZ)=3>e7D%F2O(yu7@Ef`TF#C@Co^gMo^QimIxrnwpwA7-(o{XliO|X=!PL zfsT%juCA`0o}RwGz5y5*8X6iI85tWJo0yoGnwpxKnVFlLTUc0FT3T9JSy@|K+kkCcvmzTGP*6~CaBxUSNN8wiSXfv@L_}m{WK>jCbaZq~OiWx{Tzq_dLPA1fVq$V~a!N`{ zYHDg)T3SX%MrLMaR#sMac6M%VZeCtqetv#oVPR2GQAtTjX=!O$Sy@FzMP+4WRaI3@ zO-*fWZGC-xLqkJTQ&V$ub4yE0TU%RudwXYRXIEEOPft&8Z*PBp|AYw>CQX_&dGh3` zQ>RX!K7GcF8M9{1nmv2=+_`h-&!4|w!GcAL7A;=9cQ>uk5sDH4e!pN zM?2c%!f)$Moqn;JbAR{#-LH2<-aWd<6M=_Uy)Vz z>Gb1s+(~DB#NsS6_)g4`cRj>@b~4MGr%TsH2#HlrdJFVdQ&MBb@08(^UA^-pY literal 0 HcmV?d00001 diff --git a/umn/source/_static/images/en-us_image_0000001287445460.jpg b/umn/source/_static/images/en-us_image_0000001287445460.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a386f234fcc360eed03a94cf6337a8b32f28a481 GIT binary patch literal 744 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<ECr+Na zbot8FYu9hwy!G(W<0ns_J%91?)yGetzkL1n{m0K=Ab&A3Fhjfr_ZgbM1cClyVqsxs zVF&q(k*OSrnFU!`6%E;h90S=C3x$=88aYIqCNA7~kW<+>=!0ld(M2vX6_bamA3qV?`)hC^55v!}dsmzkfp zwK#Z>nVG)PYU4?QObhF0%wcXkDSOU3-2P!d&z`&Xe7D%F2O(yu7@Ef`TF#C@Co^gMo^QimIxrnwpwA7-(o{XliO|X=!PL zfsT%juCA`0o}RwGz5y5*8X6iI85tWJo0yoGnwpxKnVFlLTUc0FT3T9JSy@|K+kkCcvmzTGP*6~CaBxUSNN8wiSXfv@L_}m{WK>jCbaZq~OiWx{Tzq_dLPA1fVq$V~a!N`{ zYHDg)T3SX%MrLMaR#sMac6M%VZeCtqetv#oVPR2GQAtTjX=!O$Sy@FzMP+4WRaI3@ zO-*fWZGC-xLqkJTQ&V$ub4yE0TU%RudwXYRXIEEOPft&8Z*PBp|AYw>CQX_&dGh3` zQ>RX!K7GcF8M9{1nmv2=+_`h-&!4|w!GcAL7A;=9cQ>uk5sDH4e!pN zM?2c%!f)$Moqn;JbAR{#-LH2<-aWd<6M=_Uy)Vz z>Gb1s+(~DB#NsS6_)g4`cRj>@b~4MGr%TsH2#HlrdJFVdQ&MBb@08(^UA^-pY literal 0 HcmV?d00001 diff --git a/umn/source/_static/images/en-us_image_0000001287605372.png b/umn/source/_static/images/en-us_image_0000001287605372.png new file mode 100644 index 0000000000000000000000000000000000000000..1909444d23d92a3a6566bca91ce065d14dbda919 GIT binary patch literal 1004 zcmeAS@N?(olHy`uVBq!ia0vp^Vj#@H3?x5i&EaHVU}gyL32_B-i2;l_022maMg=TL zfE5PVkN`UjaKHd37;wP=HyH51052HufdM}l2!Meg7zlxZFc^q{fvBjc7#N6yfrNyF zBp676fwZ)=3>e7D%F2O(yu7@Ef`TF#C@Co^gMo^QimIxrnwpwA7-(o{XliO|X=!PL zfsT%juCA`0o}RwGz5y5*8X6iI85tWJo0yoGnwpxKnVFlLTUc0FT3T9JSy@|K+kkCcvmzTGP*6~CaBxUSNN8wiSXfv@L_}m{WK>jCbaZq~OiWx{Tzq_dLPA1fVq$V~a!N`{ zYHDg)T3SX%MrLMaR#sMac6M%VZeCtqetv#oVPR2GQAtTjX=!O$Sy@FzMP+4WRaI3@ zO-*fWZGC-xLqkJTQ&V$ub4yE0TU%RudwXYRXIEEOPft&8Z*PBp|AYw>CQX_&dGh3` zQ>RX!K7GcF8M9{1nmv2=+_`h-&!4|w!GcAL7A;=9cQ>uk5sDH4e!pN zM?2c%!f)$Moqn;JbAR{#-LH2<-aWd<6M=_Uy)Vz z>Gb1s+(~DB#NsS6_)g4`cRj>@b~4MGr%TsH2#HlrdJFVdQ&MBb@08(^UA^-pY literal 0 HcmV?d00001 diff --git a/umn/source/_static/images/en-us_image_0000001287765296.png b/umn/source/_static/images/en-us_image_0000001287765296.png new file mode 100644 index 0000000000000000000000000000000000000000..1909444d23d92a3a6566bca91ce065d14dbda919 GIT binary patch literal 1004 zcmeAS@N?(olHy`uVBq!ia0vp^Vj#@H3?x5i&EaHVU}gyL32_B-i2;l_022maMg=TL zfE5PVkN`UjaKHd37;wP=HyH51052HufdM}l2!Meg7zlxZFc^q{fvBjc7#N6yfrNyF zBp676fwZ)=3>e7D%F2O(yu7@Ef`TF#C@Co^gMo^QimIxrnwpwA7-(o{XliO|X=!PL zfsT%juCA`0o}RwGz5y5*8X6iI85tWJo0yoGnwpxKnVFlLTUc0FT3T9JSy@|K+kkCcvmzTGP*6~CaBxUSNN8wiSXfv@L_}m{WK>jCbaZq~OiWx{Tzq_dLPA1fVq$V~a!N`{ zYHDg)T3SX%MrLMaR#sMac6M%VZeCtqetv#oVPR2GQAtTjX=!O$Sy@FzMP+4WRaI3@ zO-*fWZGC-xLqkJTQ&V$ub4yE0TU%RudwXYRXIEEOPft&8Z*PBp|AYw>CQX_&dGh3` zQ>RX!K7GcF8M9{1nmv2=+_`h-&!4|w!GcAL7A;=9cQ>uk5sDH4e!pN zM?2c%!f)$Moqn;JbAR{#-LH2<-aWd<6M=_Uy)Vz z>Gb1s+(~DB#NsS6_)g4`cRj>@b~4MGr%TsH2#HlrdJFVdQ&MBb@08(^UA^-pY literal 0 HcmV?d00001 diff --git a/umn/source/_static/images/en-us_image_0000001287765312.png b/umn/source/_static/images/en-us_image_0000001287765312.png new file mode 100644 index 0000000000000000000000000000000000000000..1909444d23d92a3a6566bca91ce065d14dbda919 GIT binary patch literal 1004 zcmeAS@N?(olHy`uVBq!ia0vp^Vj#@H3?x5i&EaHVU}gyL32_B-i2;l_022maMg=TL zfE5PVkN`UjaKHd37;wP=HyH51052HufdM}l2!Meg7zlxZFc^q{fvBjc7#N6yfrNyF zBp676fwZ)=3>e7D%F2O(yu7@Ef`TF#C@Co^gMo^QimIxrnwpwA7-(o{XliO|X=!PL zfsT%juCA`0o}RwGz5y5*8X6iI85tWJo0yoGnwpxKnVFlLTUc0FT3T9JSy@|K+kkCcvmzTGP*6~CaBxUSNN8wiSXfv@L_}m{WK>jCbaZq~OiWx{Tzq_dLPA1fVq$V~a!N`{ zYHDg)T3SX%MrLMaR#sMac6M%VZeCtqetv#oVPR2GQAtTjX=!O$Sy@FzMP+4WRaI3@ zO-*fWZGC-xLqkJTQ&V$ub4yE0TU%RudwXYRXIEEOPft&8Z*PBp|AYw>CQX_&dGh3` zQ>RX!K7GcF8M9{1nmv2=+_`h-&!4|w!GcAL7A;=9cQ>uk5sDH4e!pN zM?2c%!f)$Moqn;JbAR{#-LH2<-aWd<6M=_Uy)Vz z>Gb1s+(~DB#NsS6_)g4`cRj>@b~4MGr%TsH2#HlrdJFVdQ&MBb@08(^UA^-pY literal 0 HcmV?d00001 diff --git a/umn/source/_static/images/en-us_image_0000001287765320.png b/umn/source/_static/images/en-us_image_0000001287765320.png new file mode 100644 index 0000000000000000000000000000000000000000..1909444d23d92a3a6566bca91ce065d14dbda919 GIT binary patch literal 1004 zcmeAS@N?(olHy`uVBq!ia0vp^Vj#@H3?x5i&EaHVU}gyL32_B-i2;l_022maMg=TL zfE5PVkN`UjaKHd37;wP=HyH51052HufdM}l2!Meg7zlxZFc^q{fvBjc7#N6yfrNyF zBp676fwZ)=3>e7D%F2O(yu7@Ef`TF#C@Co^gMo^QimIxrnwpwA7-(o{XliO|X=!PL zfsT%juCA`0o}RwGz5y5*8X6iI85tWJo0yoGnwpxKnVFlLTUc0FT3T9JSy@|K+kkCcvmzTGP*6~CaBxUSNN8wiSXfv@L_}m{WK>jCbaZq~OiWx{Tzq_dLPA1fVq$V~a!N`{ zYHDg)T3SX%MrLMaR#sMac6M%VZeCtqetv#oVPR2GQAtTjX=!O$Sy@FzMP+4WRaI3@ zO-*fWZGC-xLqkJTQ&V$ub4yE0TU%RudwXYRXIEEOPft&8Z*PBp|AYw>CQX_&dGh3` zQ>RX!K7GcF8M9{1nmv2=+_`h-&!4|w!GcAL7A;=9cQ>uk5sDH4e!pN zM?2c%!f)$Moqn;JbAR{#-LH2<-aWd<6M=_Uy)Vz z>Gb1s+(~DB#NsS6_)g4`cRj>@b~4MGr%TsH2#HlrdJFVdQ&MBb@08(^UA^-pY literal 0 HcmV?d00001 diff --git a/umn/source/_static/images/en-us_image_0000001287765328.jpg b/umn/source/_static/images/en-us_image_0000001287765328.jpg new file mode 100644 index 0000000000000000000000000000000000000000..30be5760a289637e4ea4d0c6d9adbb52d1a20a7c GIT binary patch literal 752 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<ECr+Na zbot8FYu9hwy!G(W<0ns_J%91?)yGetzkL1n{m0K=Ab&A3Fhjfr_ZgbM1cClyVqsxs zVF&q(k*OSrnFU!`6%E;h90S=C3x$=88aYIqCNA7~kW<+>=!0ld(M2vX6_bamA3A*ZfcAO-oOoRbTb;{_~%6zQ)$&Md-@M-Tm_V>5rf9nJ4fWzR6g+XoD3~m&O7R I=Kp^a0C0~HQ2+n{ literal 0 HcmV?d00001 diff --git a/umn/source/_static/images/en-us_image_0000001287924936.png b/umn/source/_static/images/en-us_image_0000001287924936.png new file mode 100644 index 0000000000000000000000000000000000000000..1909444d23d92a3a6566bca91ce065d14dbda919 GIT binary patch literal 1004 zcmeAS@N?(olHy`uVBq!ia0vp^Vj#@H3?x5i&EaHVU}gyL32_B-i2;l_022maMg=TL zfE5PVkN`UjaKHd37;wP=HyH51052HufdM}l2!Meg7zlxZFc^q{fvBjc7#N6yfrNyF zBp676fwZ)=3>e7D%F2O(yu7@Ef`TF#C@Co^gMo^QimIxrnwpwA7-(o{XliO|X=!PL zfsT%juCA`0o}RwGz5y5*8X6iI85tWJo0yoGnwpxKnVFlLTUc0FT3T9JSy@|K+kkCcvmzTGP*6~CaBxUSNN8wiSXfv@L_}m{WK>jCbaZq~OiWx{Tzq_dLPA1fVq$V~a!N`{ zYHDg)T3SX%MrLMaR#sMac6M%VZeCtqetv#oVPR2GQAtTjX=!O$Sy@FzMP+4WRaI3@ zO-*fWZGC-xLqkJTQ&V$ub4yE0TU%RudwXYRXIEEOPft&8Z*PBp|AYw>CQX_&dGh3` zQ>RX!K7GcF8M9{1nmv2=+_`h-&!4|w!GcAL7A;=9cQ>uk5sDH4e!pN zM?2c%!f)$Moqn;JbAR{#-LH2<-aWd<6M=_Uy)Vz z>Gb1s+(~DB#NsS6_)g4`cRj>@b~4MGr%TsH2#HlrdJFVdQ&MBb@08(^UA^-pY literal 0 HcmV?d00001 diff --git a/umn/source/_static/images/en-us_image_0000001287960790.jpg b/umn/source/_static/images/en-us_image_0000001287960790.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a386f234fcc360eed03a94cf6337a8b32f28a481 GIT binary patch literal 744 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<ECr+Na zbot8FYu9hwy!G(W<0ns_J%91?)yGetzkL1n{m0K=Ab&A3Fhjfr_ZgbM1cClyVqsxs zVF&q(k*OSrnFU!`6%E;h90S=C3x$=88aYIqCNA7~kW<+>=!0ld(M2vX6_bamA3qV?`)hC^55v!}dsmzkfp zwK#Z>nVG)PYU4?QObhF0%wcXkDSOU3-2P!d&z`&XNn{1`ISV`@iy0XB4ude`@%$AjK*1%RE{-7{-fyRNa~@FOak+cT^v)sOIfqo| zJnHfaIN~odYg&+_j^d9h@m?+_XHJ6;&f8+*ZiqhUY2sAp)y1Wg!{x}jXhnyYu}k-E$g|mBo~xCx?EiWF%PZ!5lijVS$Xp^l-C$`N P(7g=+a4glfb|kt2WHJ)Ga1O(g|d zRUosxpdYnsuT1~DOz#gTX;z=|UN7WrR?B4iVe;S$pZF%mJ(iRQj&N!Pnes!d6#Px- zul1&foi7{N?v8S~{7T!l*N1od7)!y79Vd3oqR=idU@2qHSg_Rm82BJG+oKN8-#;nd zew?|w&Z-@f${@6A_?`^+#NCT^#$oX-fYvOd(_FLGxS#C+n$pA8=44raq;f*Pa8qNO=_bAr@Kk5WGqxr|emmJHK+k7kr3x zYPP8W#T?^+7k6O-8gs#mxSDp{SE;DREf0*CFJk$34Q0`GP}4f-wm703;#5z~Sl}`J cIe)kQ00)bS)hVEi@&Et;07*qoM6N<$g3QaWMgRZ+ literal 0 HcmV?d00001 diff --git a/umn/source/_static/images/en-us_image_0000001288319004.png b/umn/source/_static/images/en-us_image_0000001288319004.png new file mode 100644 index 0000000000000000000000000000000000000000..064e1ef8557868f5d19a1a1f29ee8e1f42572601 GIT binary patch literal 51245 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

#iq;I( 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 literal 0 HcmV?d00001 diff --git a/umn/source/_static/images/en-us_image_0000001340205085.jpg b/umn/source/_static/images/en-us_image_0000001340205085.jpg new file mode 100644 index 0000000000000000000000000000000000000000..76e70fb743dc87de583b8ecdf5d0fc9b26fd7a67 GIT binary patch literal 740 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<ECr+Na zbot8FYu9hwy!G(W<0ns_J%91?)yGetzkL1n{m0K=Ab&A3Fhjfr_ZgbM1cClyVqsxs zVF&q(k*OSrnFU!`6%E;h90S=C3x$=88aYIqCNA7~kW<+>=!0ld(M2vX6_bamA3OniOr2Ca^}r@ zyfim+ZN)V~)Bg-pzfF@&6u&F^!d`2=T61FI3jfMt$sLn2j#Q^wPZgI?bkDikYjw!h w?3A@fTzH?&TO+eaY*pzON<^oKT$yinJT~$|NwS1~wfFA)A75VIFaCcM00HL%NdN!< literal 0 HcmV?d00001 diff --git a/umn/source/_static/images/en-us_image_0000001340285285.png b/umn/source/_static/images/en-us_image_0000001340285285.png new file mode 100644 index 0000000000000000000000000000000000000000..1909444d23d92a3a6566bca91ce065d14dbda919 GIT binary patch literal 1004 zcmeAS@N?(olHy`uVBq!ia0vp^Vj#@H3?x5i&EaHVU}gyL32_B-i2;l_022maMg=TL zfE5PVkN`UjaKHd37;wP=HyH51052HufdM}l2!Meg7zlxZFc^q{fvBjc7#N6yfrNyF zBp676fwZ)=3>e7D%F2O(yu7@Ef`TF#C@Co^gMo^QimIxrnwpwA7-(o{XliO|X=!PL zfsT%juCA`0o}RwGz5y5*8X6iI85tWJo0yoGnwpxKnVFlLTUc0FT3T9JSy@|K+kkCcvmzTGP*6~CaBxUSNN8wiSXfv@L_}m{WK>jCbaZq~OiWx{Tzq_dLPA1fVq$V~a!N`{ zYHDg)T3SX%MrLMaR#sMac6M%VZeCtqetv#oVPR2GQAtTjX=!O$Sy@FzMP+4WRaI3@ zO-*fWZGC-xLqkJTQ&V$ub4yE0TU%RudwXYRXIEEOPft&8Z*PBp|AYw>CQX_&dGh3` zQ>RX!K7GcF8M9{1nmv2=+_`h-&!4|w!GcAL7A;=9cQ>uk5sDH4e!pN zM?2c%!f)$Moqn;JbAR{#-LH2<-aWd<6M=_Uy)Vz z>Gb1s+(~DB#NsS6_)g4`cRj>@b~4MGr%TsH2#HlrdJFVdQ&MBb@08(^UA^-pY literal 0 HcmV?d00001 diff --git a/umn/source/_static/images/en-us_image_0000001340285301.png b/umn/source/_static/images/en-us_image_0000001340285301.png new file mode 100644 index 0000000000000000000000000000000000000000..1909444d23d92a3a6566bca91ce065d14dbda919 GIT binary patch literal 1004 zcmeAS@N?(olHy`uVBq!ia0vp^Vj#@H3?x5i&EaHVU}gyL32_B-i2;l_022maMg=TL zfE5PVkN`UjaKHd37;wP=HyH51052HufdM}l2!Meg7zlxZFc^q{fvBjc7#N6yfrNyF zBp676fwZ)=3>e7D%F2O(yu7@Ef`TF#C@Co^gMo^QimIxrnwpwA7-(o{XliO|X=!PL zfsT%juCA`0o}RwGz5y5*8X6iI85tWJo0yoGnwpxKnVFlLTUc0FT3T9JSy@|K+kkCcvmzTGP*6~CaBxUSNN8wiSXfv@L_}m{WK>jCbaZq~OiWx{Tzq_dLPA1fVq$V~a!N`{ zYHDg)T3SX%MrLMaR#sMac6M%VZeCtqetv#oVPR2GQAtTjX=!O$Sy@FzMP+4WRaI3@ zO-*fWZGC-xLqkJTQ&V$ub4yE0TU%RudwXYRXIEEOPft&8Z*PBp|AYw>CQX_&dGh3` zQ>RX!K7GcF8M9{1nmv2=+_`h-&!4|w!GcAL7A;=9cQ>uk5sDH4e!pN zM?2c%!f)$Moqn;JbAR{#-LH2<-aWd<6M=_Uy)Vz z>Gb1s+(~DB#NsS6_)g4`cRj>@b~4MGr%TsH2#HlrdJFVdQ&MBb@08(^UA^-pY literal 0 HcmV?d00001 diff --git a/umn/source/_static/images/en-us_image_0000001340285305.png b/umn/source/_static/images/en-us_image_0000001340285305.png new file mode 100644 index 0000000000000000000000000000000000000000..1909444d23d92a3a6566bca91ce065d14dbda919 GIT binary patch literal 1004 zcmeAS@N?(olHy`uVBq!ia0vp^Vj#@H3?x5i&EaHVU}gyL32_B-i2;l_022maMg=TL zfE5PVkN`UjaKHd37;wP=HyH51052HufdM}l2!Meg7zlxZFc^q{fvBjc7#N6yfrNyF zBp676fwZ)=3>e7D%F2O(yu7@Ef`TF#C@Co^gMo^QimIxrnwpwA7-(o{XliO|X=!PL zfsT%juCA`0o}RwGz5y5*8X6iI85tWJo0yoGnwpxKnVFlLTUc0FT3T9JSy@|K+kkCcvmzTGP*6~CaBxUSNN8wiSXfv@L_}m{WK>jCbaZq~OiWx{Tzq_dLPA1fVq$V~a!N`{ zYHDg)T3SX%MrLMaR#sMac6M%VZeCtqetv#oVPR2GQAtTjX=!O$Sy@FzMP+4WRaI3@ zO-*fWZGC-xLqkJTQ&V$ub4yE0TU%RudwXYRXIEEOPft&8Z*PBp|AYw>CQX_&dGh3` zQ>RX!K7GcF8M9{1nmv2=+_`h-&!4|w!GcAL7A;=9cQ>uk5sDH4e!pN zM?2c%!f)$Moqn;JbAR{#-LH2<-aWd<6M=_Uy)Vz z>Gb1s+(~DB#NsS6_)g4`cRj>@b~4MGr%TsH2#HlrdJFVdQ&MBb@08(^UA^-pY literal 0 HcmV?d00001 diff --git a/umn/source/_static/images/en-us_image_0000001340285313.png b/umn/source/_static/images/en-us_image_0000001340285313.png new file mode 100644 index 0000000000000000000000000000000000000000..09717d472864f1947b042e2ecc0200a0383e3fe6 GIT binary patch literal 418 zcmV;T0bTxyP)*W4Xus-3kfzhG!*C@%?$=MI5ZR_=+MyW=s(b);6V-z z7j)p_aDqX?#ZON2<)yvDC3?%jd++zT-+RCJi}}9qv*NL~VsFg-3)G`kD^u$X=WZ|- ztxz7V`!aR=9oQsOD3MPmrg(%qodv}i(5|W(Yoaq?JVmZ}PQi)?a3xBnLpqZq3wUyj zW#3S@N5BTw!I3U1;00B=!zozdy5TY!gC!2Lh7PI+ioE1b^}!`*G;jeL9TZgFL&!+5 zWhTLPVbrJFxT9%@7bPT^xsK{N4u)wW{n2Y)aoKQ#IC(Z|mBT=p`&Otv_G5)|t%G#* z_WmiwTq<~nzXJtTGyQnt_UwVKbabXbDW4u^?0FuB@%0XW%5XBTX8QVq6RZr{)oI2$ zpoA-ha-QEXb}V+Ydt}olsbqrn$?rA3>hU!K7j0FKzi6k%+TTGx0Xbr|F20^>(EtDd M07*qoM6N<$f_bI9Hvj+t literal 0 HcmV?d00001 diff --git a/umn/source/_static/images/en-us_image_0000001340285317.jpg b/umn/source/_static/images/en-us_image_0000001340285317.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a386f234fcc360eed03a94cf6337a8b32f28a481 GIT binary patch literal 744 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<ECr+Na zbot8FYu9hwy!G(W<0ns_J%91?)yGetzkL1n{m0K=Ab&A3Fhjfr_ZgbM1cClyVqsxs zVF&q(k*OSrnFU!`6%E;h90S=C3x$=88aYIqCNA7~kW<+>=!0ld(M2vX6_bamA3qV?`)hC^55v!}dsmzkfp zwK#Z>nVG)PYU4?QObhF0%wcXkDSOU3-2P!d&z`&X^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<ECr+Na zbot8FYu9hwy!G(W<0ns_J%91?)yGetzkL1n{m0K=Ab&A3Fhjfr_ZgbM1cClyVqsxs zVF&q(k*OSrnFU!`6%E;h90S=C3x$=88aYIqCNA7~kW<+>=!0ld(M2vX6_bamA3qV?`)hC^55v!}dsmzkfp zwK#Z>nVG)PYU4?QObhF0%wcXkDSOU3-2P!d&z`&Xe7D%F2O(yu7@Ef`TF#C@Co^gMo^QimIxrnwpwA7-(o{XliO|X=!PL zfsT%juCA`0o}RwGz5y5*8X6iI85tWJo0yoGnwpxKnVFlLTUc0FT3T9JSy@|K+kkCcvmzTGP*6~CaBxUSNN8wiSXfv@L_}m{WK>jCbaZq~OiWx{Tzq_dLPA1fVq$V~a!N`{ zYHDg)T3SX%MrLMaR#sMac6M%VZeCtqetv#oVPR2GQAtTjX=!O$Sy@FzMP+4WRaI3@ zO-*fWZGC-xLqkJTQ&V$ub4yE0TU%RudwXYRXIEEOPft&8Z*PBp|AYw>CQX_&dGh3` zQ>RX!K7GcF8M9{1nmv2=+_`h-&!4|w!GcAL7A;=9cQ>uk5sDH4e!pN zM?2c%!f)$Moqn;JbAR{#-LH2<-aWd<6M=_Uy)Vz z>Gb1s+(~DB#NsS6_)g4`cRj>@b~4MGr%TsH2#HlrdJFVdQ&MBb@08(^UA^-pY literal 0 HcmV?d00001 diff --git a/umn/source/_static/images/en-us_image_0000001340405153.png b/umn/source/_static/images/en-us_image_0000001340405153.png new file mode 100644 index 0000000000000000000000000000000000000000..1909444d23d92a3a6566bca91ce065d14dbda919 GIT binary patch literal 1004 zcmeAS@N?(olHy`uVBq!ia0vp^Vj#@H3?x5i&EaHVU}gyL32_B-i2;l_022maMg=TL zfE5PVkN`UjaKHd37;wP=HyH51052HufdM}l2!Meg7zlxZFc^q{fvBjc7#N6yfrNyF zBp676fwZ)=3>e7D%F2O(yu7@Ef`TF#C@Co^gMo^QimIxrnwpwA7-(o{XliO|X=!PL zfsT%juCA`0o}RwGz5y5*8X6iI85tWJo0yoGnwpxKnVFlLTUc0FT3T9JSy@|K+kkCcvmzTGP*6~CaBxUSNN8wiSXfv@L_}m{WK>jCbaZq~OiWx{Tzq_dLPA1fVq$V~a!N`{ zYHDg)T3SX%MrLMaR#sMac6M%VZeCtqetv#oVPR2GQAtTjX=!O$Sy@FzMP+4WRaI3@ zO-*fWZGC-xLqkJTQ&V$ub4yE0TU%RudwXYRXIEEOPft&8Z*PBp|AYw>CQX_&dGh3` zQ>RX!K7GcF8M9{1nmv2=+_`h-&!4|w!GcAL7A;=9cQ>uk5sDH4e!pN zM?2c%!f)$Moqn;JbAR{#-LH2<-aWd<6M=_Uy)Vz z>Gb1s+(~DB#NsS6_)g4`cRj>@b~4MGr%TsH2#HlrdJFVdQ&MBb@08(^UA^-pY literal 0 HcmV?d00001 diff --git a/umn/source/_static/images/en-us_image_0000001340405157.png b/umn/source/_static/images/en-us_image_0000001340405157.png new file mode 100644 index 0000000000000000000000000000000000000000..1909444d23d92a3a6566bca91ce065d14dbda919 GIT binary patch literal 1004 zcmeAS@N?(olHy`uVBq!ia0vp^Vj#@H3?x5i&EaHVU}gyL32_B-i2;l_022maMg=TL zfE5PVkN`UjaKHd37;wP=HyH51052HufdM}l2!Meg7zlxZFc^q{fvBjc7#N6yfrNyF zBp676fwZ)=3>e7D%F2O(yu7@Ef`TF#C@Co^gMo^QimIxrnwpwA7-(o{XliO|X=!PL zfsT%juCA`0o}RwGz5y5*8X6iI85tWJo0yoGnwpxKnVFlLTUc0FT3T9JSy@|K+kkCcvmzTGP*6~CaBxUSNN8wiSXfv@L_}m{WK>jCbaZq~OiWx{Tzq_dLPA1fVq$V~a!N`{ zYHDg)T3SX%MrLMaR#sMac6M%VZeCtqetv#oVPR2GQAtTjX=!O$Sy@FzMP+4WRaI3@ zO-*fWZGC-xLqkJTQ&V$ub4yE0TU%RudwXYRXIEEOPft&8Z*PBp|AYw>CQX_&dGh3` zQ>RX!K7GcF8M9{1nmv2=+_`h-&!4|w!GcAL7A;=9cQ>uk5sDH4e!pN zM?2c%!f)$Moqn;JbAR{#-LH2<-aWd<6M=_Uy)Vz z>Gb1s+(~DB#NsS6_)g4`cRj>@b~4MGr%TsH2#HlrdJFVdQ&MBb@08(^UA^-pY literal 0 HcmV?d00001 diff --git a/umn/source/_static/images/en-us_image_0000001340564653.png b/umn/source/_static/images/en-us_image_0000001340564653.png new file mode 100644 index 0000000000000000000000000000000000000000..478a5525d696cc5d83e1cd362e30ee46e9fc0899 GIT binary patch literal 401 zcmV;C0dD?@P)?00044Nkl!j^_5%GiMy$cogy0I$)dkI;oaMqi+ny7B@H9lIq90}MpU(2%9o zWrEgcVPvdYx?7z1&b~k2C02C3ucrBi2iEsMV<%CB+OE`q+puk0lx2zbaNt6&G9Ls1 zlIavQ9vdsPEDFSNj3|nZ^n+CU5g}Tlv7njR_Mv&{DT`2YP$$R z)B~bhtd@^huC`XSO6jfQ1Rz9(sBHqa_hbK_w2A6ZyuYroR|YlM)j<96hL_Dy8G-Q( z_wx)RwO2Xo&Bt^Z(NTu^B2zv&KnMOa*0*<9weA*kLBGkON`V~S{&&S;B4bjVv zCoPZ(@`oqn+8A@EH$+9Kd2#hCgs7g6xtApxh9Rh7<=QCc?@k_R=y9#_uI*S9pwXof vpqnK5BbF8FQrtPY*wUY~*kz0ewN3j69wSUC2=_yf00000NkvXXu0mjf-{!X+ literal 0 HcmV?d00001 diff --git a/umn/source/_static/images/en-us_image_0000001340638257.png b/umn/source/_static/images/en-us_image_0000001340638257.png new file mode 100644 index 0000000000000000000000000000000000000000..0935390c9b7463d934ead6d987a0295421111e69 GIT binary patch literal 53751 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 O00K`}KbLh*2~7Z|T1FZG literal 0 HcmV?d00001 diff --git a/umn/source/_static/images/en-us_image_0000001340680421.jpg b/umn/source/_static/images/en-us_image_0000001340680421.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a386f234fcc360eed03a94cf6337a8b32f28a481 GIT binary patch literal 744 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<ECr+Na zbot8FYu9hwy!G(W<0ns_J%91?)yGetzkL1n{m0K=Ab&A3Fhjfr_ZgbM1cClyVqsxs zVF&q(k*OSrnFU!`6%E;h90S=C3x$=88aYIqCNA7~kW<+>=!0ld(M2vX6_bamA3qV?`)hC^55v!}dsmzkfp zwK#Z>nVG)PYU4?QObhF0%wcXkDSOU3-2P!d&z`&Xe7D%F2O(yu7@Ef`TF#C@Co^gMo^QimIxrnwpwA7-(o{XliO|X=!PL zfsT%juCA`0o}RwGz5y5*8X6iI85tWJo0yoGnwpxKnVFlLTUc0FT3T9JSy@|K+kkCcvmzTGP*6~CaBxUSNN8wiSXfv@L_}m{WK>jCbaZq~OiWx{Tzq_dLPA1fVq$V~a!N`{ zYHDg)T3SX%MrLMaR#sMac6M%VZeCtqetv#oVPR2GQAtTjX=!O$Sy@FzMP+4WRaI3@ zO-*fWZGC-xLqkJTQ&V$ub4yE0TU%RudwXYRXIEEOPft&8Z*PBp|AYw>CQX_&dGh3` zQ>RX!K7GcF8M9{1nmv2=+_`h-&!4|w!GcAL7A;=9cQ>uk5sDH4e!pN zM?2c%!f)$Moqn;JbAR{#-LH2<-aWd<6M=_Uy)Vz z>Gb1s+(~DB#NsS6_)g4`cRj>@b~4MGr%TsH2#HlrdJFVdQ&MBb@08(^UA^-pY literal 0 HcmV?d00001 diff --git a/umn/source/_static/images/en-us_image_0000001340709641.png b/umn/source/_static/images/en-us_image_0000001340709641.png new file mode 100644 index 0000000000000000000000000000000000000000..9fb10da84147c617b5947c6038f211338a0767fa GIT binary patch literal 29653 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 to advise against hard-coding plaintext passwords in the code. | + | | - Added an explanation of the **SYS.DCS** namespace and optimized the table layout in section :ref:`DCS Metrics `. | + | | - Updated the picture that demonstrates viewing instance metrics in section :ref:`Setting Alarm Rules for Critical Metrics `. | + | | - Optimized the description about CIDR blocks for cross-VPC access and added the table caption in FAQ :ref:`Do DCS Instances Support Cross-VPC Access? ` | + +-----------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | 2020-05-30 | Modified the following content: | + | | | + | | - Changed the cluster instance type to Proxy Cluster in section :ref:`DCS `. | + | | - Removed description about creating multiple instances in batches and modified password complexity requirements in section :ref:`Creating a DCS Instance `. | + | | - Removed the instance topology parameter in section :ref:`Viewing Details of a DCS Instance `. | + | | - Changed the default value of the **reserved-memory-percent** parameter to **0** and added a note clarifying that the configuration parameters supported by single-node and master/standby instances are different in section :ref:`Configuring Redis-Specific Parameters `. | + | | - Modified the special characters that the passwords cannot contain in section :ref:`Changing Instance Passwords `. | + | | - Removed the section which describes the function of viewing data storage statics of a Proxy Cluster instance. | + | | - Added a note clarifying that the backup policy function is not supported by single-node instances in section :ref:`Configuring a Backup Policy `. | + | | - Removed Redis Server and Proxy metrics from section :ref:`DCS Metrics `. | + +-----------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | 2020-03-25 | Modified the following content: | + | | | + | | - Changed the cluster instance type to Proxy Cluster in section :ref:`DCS `. | + | | - Modified the lists of supported and disabled Redis commands in section :ref:`Redis Command Compatibility `. | + | | - Added the assured/maximum bandwidth parameter in section :ref:`DCS Instance Specifications `. | + | | - Moved the metrics originally described in section :ref:`Related Services ` to section :ref:`DCS Metrics ` and updated the metrics supported by Cloud Eye. | + | | - Modified instance creation parameters in :ref:`Creating a DCS Instance ` according to DCS console upgrade and parameter modifications. | + | | - Modified instance details parameters in section :ref:`Viewing Details of a DCS Instance ` according to DCS console upgrade and parameter modifications. | + | | - Modified instance configuration parameters in section :ref:`Configuring Redis-Specific Parameters `. | + | | - Removed the function of stopping instances. | + | | - Added description about restrictions of starting instances in section :ref:`Starting DCS Instances `. | + | | - Changed parameter **Time Window** to **Maintenance** in section :ref:`Modifying an Instance's Maintenance Time Window `. | + | | - Modified description about configuring instance backup policies in section :ref:`Configuring a Backup Policy `. | + | | - Added chapter :ref:`Monitoring `, updated metrics supported by Cloud Eye, and added description about operations of viewing monitoring data and setting alarm rules. | + | | - Changed the supported number of DBs for single-node and master/standby instances in section :ref:`Does DCS Support Data Read/Write in Multiple Databases? ` | + +-----------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | 2019-04-12 | Accepted in OTC-4.0/Agile-04.2019. | + +-----------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | 2019-03-30 | Modified the following content: | + | | | + | | - Removed support for creating DCS instances with the specification of 1 GB in sections :ref:`Advantages `, :ref:`DCS Instance Specifications `, and :ref:`Creating a DCS Instance `. | + +-----------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | 2018-09-05 | Modified the following content: | + | | | + | | - Opened certain Redis cluster commands. For details about compatibility with DCS commands, see :ref:`Redis Command Compatibility `. | + +-----------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | 2018-03-16 | Added the following content: | + | | | + | | - Added the procedure for using a Redis Java (Jedis) client to access a DCS instance. For details, see :ref:`Accessing a DCS Redis Instance `. | + | | - Added descriptions about the Redis-specific parameter **notify-keyspace-events**, anddeleted descriptions about the Redis-specific parameter **maxclients**. For details, see :ref:`Configuring Redis-Specific Parameters `. | + | | - Added the procedures for modifying the time window and security group of a DCS instance. For details, see :ref:`Modifying an Instance's Maintenance Time Window ` and :ref:`Modifying an Instance's Security Group `. | + | | - Added :ref:`Do DCS Instances Support Cross-VPC Access? ` in chapter :ref:`FAQs `. | + | | | + | | Modified the following content: | + | | | + | | - Changed instance password complexity rules. | + +-----------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | 2017-11-08 | Added the following content: | + | | | + | | - Provided support for DCS instances in cluster mode. | + | | - Added sections :ref:`Modifying DCS Instance Specifications ` and :ref:`Backing Up and Restoring DCS Instances `. | + | | - Added the **Time Window** parameter. | + | | - Added section :ref:`Setting Up Environments `. | + | | | + | | - Added some FAQs in chapter :ref:`FAQs `. | + +-----------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | 2017-05-30 | This issue is the third official release, which incorporates the following changes: | + | | | + | | - Added descriptions about batch deletion of DCS instances. | + | | - Added descriptions about the Redis-specific parameter **latency-monitor-threshold**. | + +-----------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | 2017-04-28 | Added the following content: | + | | | + | | - Added descriptions of DCS metrics monitored by Cloud Eye. | + +-----------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | 2017-04-05 | This issue is the first official release. | + +-----------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ diff --git a/umn/source/faqs/can_dcs_be_accessed_over_public_networks.rst b/umn/source/faqs/can_dcs_be_accessed_over_public_networks.rst new file mode 100644 index 0000000..fbd9bf1 --- /dev/null +++ b/umn/source/faqs/can_dcs_be_accessed_over_public_networks.rst @@ -0,0 +1,8 @@ +:original_name: en-us_topic_0054235827.html + +.. _en-us_topic_0054235827: + +Can DCS Be Accessed over Public Networks? +========================================= + +DCS cannot be accessed over public networks. The ECS serving as your Redis client and the DCS instances that the Redis client want to access must belong to the same VPC. diff --git a/umn/source/faqs/can_i_modify_configuration_parameters_of_dcs_instances.rst b/umn/source/faqs/can_i_modify_configuration_parameters_of_dcs_instances.rst new file mode 100644 index 0000000..44e6170 --- /dev/null +++ b/umn/source/faqs/can_i_modify_configuration_parameters_of_dcs_instances.rst @@ -0,0 +1,8 @@ +:original_name: en-us_topic_0054235828.html + +.. _en-us_topic_0054235828: + +Can I Modify Configuration Parameters of DCS Instances? +======================================================= + +You can modify configuration parameters for DCS instances in the **Running** state. Note that configuration parameters of DCS instances in Proxy Cluster mode are not modifiable. diff --git a/umn/source/faqs/can_i_recover_data_from_deleted_dcs_instances.rst b/umn/source/faqs/can_i_recover_data_from_deleted_dcs_instances.rst new file mode 100644 index 0000000..e8a00fd --- /dev/null +++ b/umn/source/faqs/can_i_recover_data_from_deleted_dcs_instances.rst @@ -0,0 +1,12 @@ +:original_name: en-us_topic_0054235829.html + +.. _en-us_topic_0054235829: + +Can I Recover Data from Deleted DCS Instances? +============================================== + +Data that is automatically deleted by DCS instances or manually deleted by users using Redis clients cannot be recovered. By default, data is not evicted from DCS instances. However, you can modify the value of the maxmemory-policy parameter to adjust the eviction policy, and then DCS instances evict keys according to the eviction policy. + +If a DCS instance is deleted, instance data will also be removed and cannot be recovered. Therefore, exercise caution when deleting DCS instances. + +Master/Standby DCS instances support data backup. If you have backed up the instance data before deleting them, the deleted instance data can be recovered. diff --git a/umn/source/faqs/do_dcs_instances_in_cluster_mode_support_native_redis_clusters.rst b/umn/source/faqs/do_dcs_instances_in_cluster_mode_support_native_redis_clusters.rst new file mode 100644 index 0000000..0e76b5e --- /dev/null +++ b/umn/source/faqs/do_dcs_instances_in_cluster_mode_support_native_redis_clusters.rst @@ -0,0 +1,8 @@ +:original_name: en-us_topic_0072544389.html + +.. _en-us_topic_0072544389: + +Do DCS Instances in Cluster Mode Support Native Redis Clusters? +=============================================================== + +DCS instances in cluster mode do not support native Redis clusters. DCS clusters use the proxy-based cluster mode, so when you query the parameters of the native Redis cluster, DCS retains the default values for some parameters, for example, **cluster_enabled:0**. diff --git a/umn/source/faqs/do_dcs_instances_support_cross-vpc_access.rst b/umn/source/faqs/do_dcs_instances_support_cross-vpc_access.rst new file mode 100644 index 0000000..a3a9777 --- /dev/null +++ b/umn/source/faqs/do_dcs_instances_support_cross-vpc_access.rst @@ -0,0 +1,35 @@ +:original_name: en-us_topic_0103202022.html + +.. _en-us_topic_0103202022: + +Do DCS Instances Support Cross-VPC Access? +========================================== + +Generally, VPCs are isolated from each other and ECSs cannot access DCS instances that belong to a different VPC from these ECSs. + +However, by establishing VPC peering connections between VPCs, ECSs can access DCS instances across VPCs. + +When using VPC peering connections to access DCS instances across VPCs, adhere to the following rules: + +.. table:: **Table 1** Client CIDR block constraints + + +-----------------------------------+-------------------------------------+ + | CIDR Blocks of DCS Instances | CIDR Blocks Not Allowed for Clients | + +===================================+=====================================+ + | 172.16.0.0/12 to 172.16.0.0/24 | 192.168.1.0/24 | + | | | + | | 192.168.2.0/24 | + | | | + | | 192.168.3.0/24 | + +-----------------------------------+-------------------------------------+ + | 192.168.0.0/16 to 192.168.0.0/24 | 172.31.1.0/24 | + | | | + | 10.0.0.0/8 to 10.0.0.0/24 | 172.31.2.0/24 | + | | | + | | 172.31.3.0/24 | + +-----------------------------------+-------------------------------------+ + +.. note:: + + - The right column lists the CIDR blocks used by the subnets of the resource tenant. The clients cannot use these subnets. + - For more information about creating and using VPC peering connections, see the *Virtual Private Cloud User Guide*. diff --git a/umn/source/faqs/do_i_need_to_enter_a_password_when_accessing_a_dcs_instance_where_can_i_obtain_the_password.rst b/umn/source/faqs/do_i_need_to_enter_a_password_when_accessing_a_dcs_instance_where_can_i_obtain_the_password.rst new file mode 100644 index 0000000..72968d6 --- /dev/null +++ b/umn/source/faqs/do_i_need_to_enter_a_password_when_accessing_a_dcs_instance_where_can_i_obtain_the_password.rst @@ -0,0 +1,10 @@ +:original_name: en-us_topic_0066854411.html + +.. _en-us_topic_0066854411: + +Do I Need to Enter a Password When Accessing a DCS Instance? Where Can I Obtain the Password? +============================================================================================= + +Redis allows clients to access cache service directly without any password. + +In DCS, additional efforts have been made to harden Redis. A client must enter the correct password before it is allowed to access DCS instances. The instance password is manually assigned when you are creating a DCS instance. diff --git a/umn/source/faqs/does_dcs_support_common_redis_clients_such_as_jedis.rst b/umn/source/faqs/does_dcs_support_common_redis_clients_such_as_jedis.rst new file mode 100644 index 0000000..184227b --- /dev/null +++ b/umn/source/faqs/does_dcs_support_common_redis_clients_such_as_jedis.rst @@ -0,0 +1,8 @@ +:original_name: en-us_topic_0054235822.html + +.. _en-us_topic_0054235822: + +Does DCS Support Common Redis Clients Such as Jedis? +==================================================== + +DCS supports all clients compatible with Redis, including Jedis. You can download Redis clients from http://redis.io/clients. diff --git a/umn/source/faqs/does_dcs_support_data_persistence.rst b/umn/source/faqs/does_dcs_support_data_persistence.rst new file mode 100644 index 0000000..da46238 --- /dev/null +++ b/umn/source/faqs/does_dcs_support_data_persistence.rst @@ -0,0 +1,8 @@ +:original_name: en-us_topic_0054235825.html + +.. _en-us_topic_0054235825: + +Does DCS Support Data Persistence? +================================== + +Only master/standby and Proxy Cluster DCS instances support data persistence. diff --git a/umn/source/faqs/does_dcs_support_data_read_write_in_multiple_databases.rst b/umn/source/faqs/does_dcs_support_data_read_write_in_multiple_databases.rst new file mode 100644 index 0000000..181eb81 --- /dev/null +++ b/umn/source/faqs/does_dcs_support_data_read_write_in_multiple_databases.rst @@ -0,0 +1,10 @@ +:original_name: en-us_topic_0071964265.html + +.. _en-us_topic_0071964265: + +Does DCS Support Data Read/Write in Multiple Databases? +======================================================= + +Both single-node and master/standby DCS instances support data read/write in multiple databases. By default, single-node and master/standby DCS instances can read and write data in 256 databases (databases 0-255). + +DCS instances in Proxy Cluster mode do not support data read/write in multiple databases. diff --git a/umn/source/faqs/does_standby_cache_node_remain_synchronized_with_master_cache_node.rst b/umn/source/faqs/does_standby_cache_node_remain_synchronized_with_master_cache_node.rst new file mode 100644 index 0000000..65833ce --- /dev/null +++ b/umn/source/faqs/does_standby_cache_node_remain_synchronized_with_master_cache_node.rst @@ -0,0 +1,13 @@ +:original_name: en-us_topic_0054235824.html + +.. _en-us_topic_0054235824: + +Does Standby Cache Node Remain Synchronized with Master Cache Node? +=================================================================== + +Generally, updates to the master cache node are automatically and asynchronously replicated to the standby cache node. This means that data in the standby cache node may not always be consistent with data in the master cache node. This inconsistency is typically seen in either of the following situations: + +- The input/output (I/O) write speed of the master cache node is faster than the synchronization speed of the standby cache node. +- There is network latency between the master and standby cache nodes. + +If a failover occurs when some data is not yet replicated to the standby cache node, the unreplicated data may be lost after the failover. diff --git a/umn/source/faqs/how_to_select_and_configure_a_security_group.rst b/umn/source/faqs/how_to_select_and_configure_a_security_group.rst new file mode 100644 index 0000000..da7bf09 --- /dev/null +++ b/umn/source/faqs/how_to_select_and_configure_a_security_group.rst @@ -0,0 +1,32 @@ +:original_name: en-us_topic_0082605221.html + +.. _en-us_topic_0082605221: + +How to Select and Configure a Security Group? +============================================= + +An ECS can communicate with a DCS instance if they belong to the same VPC and security group rules are configured correctly. + +It is recommended that the ECS and DCS instance belong to the same security group. After a security group is created, the security group rules, by default, include a rule allowing members in the security group to access each other without any restrictions. + +If the ECS and DCS instance belong to different security groups, add security group rules to ensure that the ECS and DCS instance can access each other. + +.. note:: + + The example rules provided here are based on the assumption that: + + - The ECS on which the client runs belongs to security group **sg-ECS**, and the DCS instance that the client will access belongs to security group **sg-DCS**. + - The port number of the DCS instance is 6379. + - The remote end is a security group or an IP address. + + +.. figure:: /_static/images/en-us_image_0000001340638257.png + :alt: **Figure 1** Security group rules allowing the ECS to access the DCS instance + + **Figure 1** Security group rules allowing the ECS to access the DCS instance + + +.. figure:: /_static/images/en-us_image_0000001288319004.png + :alt: **Figure 2** Security group rules making the DCS instance accessible to the ECS + + **Figure 2** Security group rules making the DCS instance accessible to the ECS diff --git a/umn/source/faqs/index.rst b/umn/source/faqs/index.rst new file mode 100644 index 0000000..70037a8 --- /dev/null +++ b/umn/source/faqs/index.rst @@ -0,0 +1,48 @@ +:original_name: en-us_topic_0054235821.html + +.. _en-us_topic_0054235821: + +FAQs +==== + +- :ref:`Does DCS Support Common Redis Clients Such as Jedis? ` +- :ref:`Should I Install Redis If I Already Have a DCS Instance? ` +- :ref:`Do I Need to Enter a Password When Accessing a DCS Instance? Where Can I Obtain the Password? ` +- :ref:`Does Standby Cache Node Remain Synchronized with Master Cache Node? ` +- :ref:`Does DCS Support Data Persistence? ` +- :ref:`Can DCS Be Accessed over Public Networks? ` +- :ref:`Can I Modify Configuration Parameters of DCS Instances? ` +- :ref:`Can I Recover Data from Deleted DCS Instances? ` +- :ref:`What Is the Default Data Eviction Policy? ` +- :ref:`What Should I Do If the Connection Between My Redis Client and the DCS Instance Times Out? ` +- :ref:`Why Is Available Memory of Unused DCS Instances Less Than Total Memory? Why Is Memory Usage of Unused DCS Instances Greater Than Zero? ` +- :ref:`Does DCS Support Data Read/Write in Multiple Databases? ` +- :ref:`Why Can't I Back Up or Scale Up My DCS Instances? ` +- :ref:`Do DCS Instances in Cluster Mode Support Native Redis Clusters? ` +- :ref:`Why Do My DCS Instances Sometimes Become Unavailable While They Are in Running State? ` +- :ref:`Why Is the Used Instance Memory Displayed on Cloud Eye Console Slightly Higher than the Instance Available Memory? ` +- :ref:`How to Select and Configure a Security Group? ` +- :ref:`Do DCS Instances Support Cross-VPC Access? ` + +.. toctree:: + :maxdepth: 1 + :hidden: + + does_dcs_support_common_redis_clients_such_as_jedis + should_i_install_redis_if_i_already_have_a_dcs_instance + do_i_need_to_enter_a_password_when_accessing_a_dcs_instance_where_can_i_obtain_the_password + does_standby_cache_node_remain_synchronized_with_master_cache_node + does_dcs_support_data_persistence + can_dcs_be_accessed_over_public_networks + can_i_modify_configuration_parameters_of_dcs_instances + can_i_recover_data_from_deleted_dcs_instances + what_is_the_default_data_eviction_policy + what_should_i_do_if_the_connection_between_my_redis_client_and_the_dcs_instance_times_out + why_is_available_memory_of_unused_dcs_instances_less_than_total_memory_why_is_memory_usage_of_unused_dcs_instances_greater_than_zero + does_dcs_support_data_read_write_in_multiple_databases + why_cant_i_back_up_or_scale_up_my_dcs_instances + do_dcs_instances_in_cluster_mode_support_native_redis_clusters + why_do_my_dcs_instances_sometimes_become_unavailable_while_they_are_in_running_state + why_is_the_used_instance_memory_displayed_on_cloud_eye_console_slightly_higher_than_the_instance_available_memory + how_to_select_and_configure_a_security_group + do_dcs_instances_support_cross-vpc_access diff --git a/umn/source/faqs/should_i_install_redis_if_i_already_have_a_dcs_instance.rst b/umn/source/faqs/should_i_install_redis_if_i_already_have_a_dcs_instance.rst new file mode 100644 index 0000000..0563cee --- /dev/null +++ b/umn/source/faqs/should_i_install_redis_if_i_already_have_a_dcs_instance.rst @@ -0,0 +1,8 @@ +:original_name: en-us_topic_0054235823.html + +.. _en-us_topic_0054235823: + +Should I Install Redis If I Already Have a DCS Instance? +======================================================== + +It is not necessary to install Redis in this case. You can access your DCS instance through a Redis client. diff --git a/umn/source/faqs/what_is_the_default_data_eviction_policy.rst b/umn/source/faqs/what_is_the_default_data_eviction_policy.rst new file mode 100644 index 0000000..910f749 --- /dev/null +++ b/umn/source/faqs/what_is_the_default_data_eviction_policy.rst @@ -0,0 +1,40 @@ +:original_name: en-us_topic_0054235830.html + +.. _en-us_topic_0054235830: + +What Is the Default Data Eviction Policy? +========================================= + +Data is evicted from the cache based on the user-defined space limit in order to make space for new data. + +By default, data is not evicted from DCS instances. In the current version of DCS, you can select an eviction policy. + +When maxmemory is reached, you can select one of the following six eviction policies: + +- noeviction + + When the memory limit is reached, DCS instances return errors to clients and no longer process write requests or other requests that could result in more memory being used. However, DEL and a few more exception requests can continue to be processed. + +- allkeys-lru + + DCS instances try to evict the least recently used keys first, in order to make space for new data. + +- volatile-lru + + DCS instances try to evict the least recently used keys with an expire set first, in order to make space for new data. + +- allkeys-random + + DCS instances evict random keys in order to make space for new data. + +- volatile-random + + DCS instances evict random keys with an expire set, in order to make space for new data. + +- volatile-ttl + + DCS instances evict keys with an expire set, and try to evict keys with a shorter time to live (TTL) first, in order to make space for new data. + +.. note:: + + If the configured policy is volatile-lru, volatile-random, or volatile-ttl, and no keys match the configured policy, the eviction behavior will match noeviction. diff --git a/umn/source/faqs/what_should_i_do_if_the_connection_between_my_redis_client_and_the_dcs_instance_times_out.rst b/umn/source/faqs/what_should_i_do_if_the_connection_between_my_redis_client_and_the_dcs_instance_times_out.rst new file mode 100644 index 0000000..ced84c5 --- /dev/null +++ b/umn/source/faqs/what_should_i_do_if_the_connection_between_my_redis_client_and_the_dcs_instance_times_out.rst @@ -0,0 +1,12 @@ +:original_name: en-us_topic_0054235831.html + +.. _en-us_topic_0054235831: + +What Should I Do If the Connection Between My Redis Client and the DCS Instance Times Out? +========================================================================================== + +Reconnect your client to the DCS instance. + +The timeout is probably due to network connectivity problems or DCS instance errors. For example, if your DCS instance is overloaded or experiences a failover, your Redis client returns the error message "Connection timed out" or "Connection reset by peer". + +Some Redis clients do not support automatic reconnection. If you use these Redis clients, the applications that use DCS must be able to proactively initiate reconnection. diff --git a/umn/source/faqs/why_cant_i_back_up_or_scale_up_my_dcs_instances.rst b/umn/source/faqs/why_cant_i_back_up_or_scale_up_my_dcs_instances.rst new file mode 100644 index 0000000..e96b52b --- /dev/null +++ b/umn/source/faqs/why_cant_i_back_up_or_scale_up_my_dcs_instances.rst @@ -0,0 +1,9 @@ +:original_name: en-us_topic_0072544388.html + +.. _en-us_topic_0072544388: + +Why Can't I Back Up or Scale Up My DCS Instances? +================================================= + +- Only master/standby and Proxy Cluster DCS instances can be backed up and restored. Single-node DCS instances do not support backup or restoration. +- DCS instance backup and scale-up are new functions provided by DCS. If your DCS instances were created long time ago, the version of these DCS instances is not upgraded and therefore cannot support some new functions (such as DCS instance backup and scale-up). You can contact technical support personnel to upgrade your DCS instance version. After the upgrade, you can back up and scale up your DCS instances. diff --git a/umn/source/faqs/why_do_my_dcs_instances_sometimes_become_unavailable_while_they_are_in_running_state.rst b/umn/source/faqs/why_do_my_dcs_instances_sometimes_become_unavailable_while_they_are_in_running_state.rst new file mode 100644 index 0000000..ce752aa --- /dev/null +++ b/umn/source/faqs/why_do_my_dcs_instances_sometimes_become_unavailable_while_they_are_in_running_state.rst @@ -0,0 +1,16 @@ +:original_name: en-us_topic_0077673452.html + +.. _en-us_topic_0077673452: + +Why Do My DCS Instances Sometimes Become Unavailable While They Are in Running State? +===================================================================================== + +The most probable cause is a network fault. To locate the fault, perform the following steps: + +#. Log in to the DCS console. +#. In the navigation pane, choose **Cache Manager**. +#. In the same row as the DCS instance whose metrics you want to view, click **View Metric**. +#. View monitoring metrics of the DCS instance. + + - If monitoring metrics change dramatically over a certain period of time, a network fault has occurred. After the network administrator rectifies the problem, reconnect to the DCS instance or perform management operations on the DCS instance again. + - If all monitoring metrics fall within the acceptable range, contact technical support. diff --git a/umn/source/faqs/why_is_available_memory_of_unused_dcs_instances_less_than_total_memory_why_is_memory_usage_of_unused_dcs_instances_greater_than_zero.rst b/umn/source/faqs/why_is_available_memory_of_unused_dcs_instances_less_than_total_memory_why_is_memory_usage_of_unused_dcs_instances_greater_than_zero.rst new file mode 100644 index 0000000..2e3ec20 --- /dev/null +++ b/umn/source/faqs/why_is_available_memory_of_unused_dcs_instances_less_than_total_memory_why_is_memory_usage_of_unused_dcs_instances_greater_than_zero.rst @@ -0,0 +1,10 @@ +:original_name: en-us_topic_0057984494.html + +.. _en-us_topic_0057984494: + +Why Is Available Memory of Unused DCS Instances Less Than Total Memory? Why Is Memory Usage of Unused DCS Instances Greater Than Zero? +====================================================================================================================================== + +Before a newly created DCS instance is put into use, the available memory is less than the total memory because some memory is reserved for system overhead and data persistence (supported by master/standby instances). For more information about the available memory for each type of DCS instance, see :ref:`DCS Instance Specifications `. + +DCS instances use a certain amount of memory for Redis-server buffers and internal data structures. This is why memory usage of unused DCS instances is greater than zero. diff --git a/umn/source/faqs/why_is_the_used_instance_memory_displayed_on_cloud_eye_console_slightly_higher_than_the_instance_available_memory.rst b/umn/source/faqs/why_is_the_used_instance_memory_displayed_on_cloud_eye_console_slightly_higher_than_the_instance_available_memory.rst new file mode 100644 index 0000000..c34bc05 --- /dev/null +++ b/umn/source/faqs/why_is_the_used_instance_memory_displayed_on_cloud_eye_console_slightly_higher_than_the_instance_available_memory.rst @@ -0,0 +1,10 @@ +:original_name: en-us_topic_0078401074.html + +.. _en-us_topic_0078401074: + +Why Is the Used Instance Memory Displayed on Cloud Eye Console Slightly Higher than the Instance Available Memory? +================================================================================================================== + +For DCS instances in single-node and master/standby modes, the used instance memory is measured by the redis-server process. For DCS instances in Proxy Cluster mode, the used cluster memory is the sum of used memory of all shards in the cluster. The redis-server of each shard measures the used memory of the shard. + +Due to internal implementation of the open-source redis-server, the used instance memory is normally slightly higher than the available instance memory. diff --git a/umn/source/getting_started/accessing_a_dcs_redis_instance.rst b/umn/source/getting_started/accessing_a_dcs_redis_instance.rst new file mode 100644 index 0000000..5cd46f4 --- /dev/null +++ b/umn/source/getting_started/accessing_a_dcs_redis_instance.rst @@ -0,0 +1,155 @@ +:original_name: en-us_topic_0054235811.html + +.. _en-us_topic_0054235811: + +Accessing a DCS Redis Instance +============================== + +You can access the created DCS instances through your Redis client. + +DCS works with multiple types of Redis clients. This section describes how to use the redis-cli and Redis Java (Jedis) clients to access a DCS Redis instance. For more information on how to use other Redis clients, visit https://redis.io/clients. + +Prerequisites +------------- + +- The DCS Redis instance you want to access is in the **Running** state. + +- An ECS has been created to serve as your Redis client. + + For more information on how to create ECSs, see the *Elastic Cloud Server User Guide*. + +- The GNU Compiler Collection (GCC) has been installed on the ECS serving as your Redis client. + + .. note:: + + The ECS serving as your Redis client and the DCS instance to be accessed must belong to the same VPC and can communicate with each other. + +Procedure +--------- + +#. Log in to the management console. + +#. Click |image1| in the upper left corner of the management console and select a region. + +#. Click **Service List**, and choose **Database** > **Distributed Cache Service** to launch the DCS console. + +#. In the navigation pane, choose **Cache Manager**. + +#. .. _en-us_topic_0054235811__li7304143: + + Obtain the IP address:port number of the DCS instance. + + a. On the **Cache Manager** page, click the name of the DCS instance you want to access. + b. On the **Basic Information** tab page of the instance, view the **Connection Address** in the **Connection** section. + +#. Access the chosen DCS instance. + + - By using redis-cli + + a. Download the source code package of your Redis client from http://download.redis.io/releases/redis-3.0.7.tar.gz. + + b. Upload the source code package of your Redis client to the ECS serving as your Redis client. + + c. Log in to the ECS that serves as your Redis client. + + d. Run the following command to decompress the **redis-3.0.7** directory from the source code package of your Redis client: + + **tar -xzf redis-3.0.7.tar.gz** + + e. Run the following commands to go to the **redis-3.0.7** directory and compile the source code of your Redis client: + + **cd redis-3.0.7** + + **make** + + f. Run the following commands to access the chosen DCS instance: + + **cd src** + + **./redis-cli -h 192.168.0.148 -p 6379** + + In the second command, use the DCS instance IP address and port number obtained in :ref:`5 `. + + g. On redis-cli, run the following command to authenticate access to the selected DCS instance: + + **auth password** + + In this command, *password* indicates the password used for login to the chosen DCS instance. This password is defined during DCS Redis instance creation. + + If information similar to the following is displayed, access to the chosen DCS instance is authenticated, and you can now read from and write to the chosen DCS instance: + + .. code-block:: console + + [root@dcs-vm ~]# ./redis-cli -h 192.168.0.148 -p 6379 + 192.168.0.148:6379> auth ****** + OK + 192.168.0.148:6379> + + In this example command output: + + - **192.168.0.148** is an example IP address of DCS instance, which is obtained in :ref:`5 `. + - **6379** is an example port number of DCS instance, which is obtained in :ref:`5 `. + + - By using Jedis + + a. Obtain the source code of the Jedis client from https://github.com/xetorthio/jedis. + b. Write code. + + #. Example code for a single Jedis connection + + .. code-block:: + + //Create a connection + String host = "192.168.0.150"; + int port = 6379; + String pwd = "passwd"; + + Jedis client = new Jedis(host, port); + client.auth(pwd); + client.connect(); //Run the set command + String result = client.set("key-string", "Hello, Redis!"); + System.out.println( String.format("set command result:%s", result) ); //Run the get command + String value = client.get("key-string"); + System.out.println( String.format("get command result:%s", value) ); + + .. note:: + + In actual scenarios, replace **passwd** with the actual ciphertext password of the Redis instance. Do not hard-code the plaintext password in the code. This advice also applies to **passwd** configurations in other steps. + + #. Example code for a Jedis connection pool + + .. code-block:: + + //Generate configuration information of a Jedis connection pool + String ip = "192.168.0.150"; + int port = 6379; + String pwd = "passwd"; + GenericObjectPoolConfig config = new GenericObjectPoolConfig(); + config.setTestOnBorrow(false); + config.setTestOnReturn(false); + config.setMaxTotal(100); + config.setMaxIdle(100); + config.setMaxWaitMillis(2000); + JedisPool pool = new JedisPool(config, ip, port, 100000, pwd);//Generate a Jedis connection pool when the client application is being initialized + //Get a Jedis connection from the Jedis connection pool when the client initiates a request + Jedis client = pool.getResource(); + try { + //Run commands + String result = client.set("key-string", "Hello, Redis!"); + System.out.println( String.format("set command result:%s", result) ); + String value = client.get("key-string"); + System.out.println( String.format("get command result:%s", value) ); + } catch (Exception e) { + // TODO: handle exception + } finally { + //Return the Jedis connection to the Jedis connection pool after the client's request is processed + if (null != client) { + pool.returnResource(client); + } + } // end of try block + //Destroy the Jedis pool when the client application is closed + pool.destroy(); + + c. Compile code according to the **readme** file in the source code of the Jedis client. Run the Jedis client to access the chosen DCS Redis instance. + +.. |image1| image:: /_static/images/en-us_image_0000001287765312.png diff --git a/umn/source/getting_started/creating_a_dcs_instance.rst b/umn/source/getting_started/creating_a_dcs_instance.rst new file mode 100644 index 0000000..621d3f3 --- /dev/null +++ b/umn/source/getting_started/creating_a_dcs_instance.rst @@ -0,0 +1,125 @@ +:original_name: en-us_topic_0054235810.html + +.. _en-us_topic_0054235810: + +Creating a DCS Instance +======================= + +Scenario +-------- + +DCS can be used only after DCS instances are created. DCS supports three types of DCS instances: single-node, master/standby, and Proxy Cluster. + +.. important:: + + DCS does not provide built-in encryption. Encrypt any sensitive data before transmitting or storing it. The purpose, scope, processing method, and time limits of data processed by DCS must comply with local laws and regulations. + +Prerequisites +------------- + +- The VPC where the DCS instance to be created is available. Security groups and subnets have been configured for the VPC. +- For more information on how to create VPCs, security groups, and subnets, see :ref:`Setting Up Environments ` or the *Virtual Private Cloud User Guide*. + +Procedure +--------- + +#. Log in to the management console. + +#. Click |image1| in the upper left corner of the management console and select a region. + +#. Click **Service List**, and choose **Database** > **Distributed Cache Service** to launch the DCS console. + +#. Click **Create DCS Instance**. + +#. Specify DCS instance parameters, such as the name, AZ, VPC, security group, and subnet. The following table describes the parameters. + + .. table:: **Table 1** DCS instance parameters + + +-----------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Parameter | Description | + +===================================+=========================================================================================================================================================================================================================================================+ + | Region | Region in which DCS is located. To select a different region, use the region selector at the upper left of the main menu bar. | + +-----------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Cache Engine | Cache engine used. Currently supported: **Redis**. | + +-----------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Version | Currently, only Redis 3.0 is supported. | + +-----------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Instance Type | Type of the DCS instance being created. | + | | | + | | Single-node, master/standby, and Proxy Cluster types are supported. | + +-----------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | AZ | AZ in which the new DCS instance resides. If the instance type is master/standby or Proxy Cluster, this parameter is displayed as **Master AZ**. | + +-----------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Standby AZ | Standby AZ in which the new DCS instance resides. | + | | | + | | If the instance type is master/standby or Proxy Cluster, **Standby AZ** is displayed. Select a standby AZ for the standby node of the instance. | + +-----------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Instance Specification | Total memory of the new DCS instance. | + | | | + | | - 2, 4, 8, 16, 32, or 64 GB if the DCS instance is in single-node or master/standby mode | + | | | + | | - 64, 128, 256 or 512 GB if the DCS instance is in Proxy Cluster mode | + | | | + | | When creating a DCS instance on the DCS console, available free memory is listed below the **Instance Specification** field. If you need more memory, click **Increase quota** below the **Instance Specification** field and contact customer service. | + +-----------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | VPC | Select a created VPC, subnet, and specify the IP address. | + +-----------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Security Group | Security group that controls access to the new DCS instance. | + | | | + | | A security group is a set of access control rules that implements access control for mutually trusted ECSs with the same security protection requirements in the same VPC. | + +-----------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Password | Password required for accessing the new DCS instance. | + | | | + | | NOTE: | + | | | + | | For security purposes, the system prompts you to enter an instance-specific password when you are accessing the DCS instance. Keep your instance password secure and change it periodically. | + | | | + | | Passwords cannot be left unspecified and must: | + | | | + | | - Consist of 8 to 32 characters. | + | | - Contain at least three of the following character types: uppercase letters, lowercase letters, digits, and special characters (:literal:`\`~!@#$^&*()-_=+\\|{}:,<.>/?`). | + +-----------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | **More Settings** | | + +-----------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Name | Name of the new DCS instance. | + | | | + | | A DCS instance name cannot be left unspecified and must: | + | | | + | | - Consist of 4 to 64 characters. | + | | - Consist of only letters, digits, hyphens (-), and underscores (_). | + | | - Start with an uppercase or lowercase letter. | + +-----------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Description | Description of the new DCS instance. | + +-----------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Auto Backup | Data backup policy. This parameter is displayed only when the instance type is master/standby or Proxy Cluster. For more information on how to configure a backup policy, see :ref:`Configuring a Backup Policy `. | + +-----------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Maintenance | Time range for any scheduled maintenance activities to occur for cache nodes of this DCS instance. | + | | | + | | Values: | + | | | + | | - 02:00-06:00 | + | | - 06:00-10:00 | + | | - 10:00-14:00 | + | | - 14:00-18:00 | + | | - 18:00-22:00 | + | | - 22:00-02:00 | + +-----------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +#. Click **Buy Now**. + + The displayed page shows the instance information you have specified. + +#. Confirm the instance information and click **Submit**. + +#. After the new DCS instance has been created, return to the **Cache Manager** page to view and manage your DCS instances. + + It takes 5 to 15 minutes to create a DCS instance. However, it will take up to approximately 30 minutes if the DCS instance is in Proxy Cluster mode. + + After a DCS instance has been successfully created, it enters the **Running** state by default. + + .. note:: + + - If the new DCS instance failed to be created, delete the unsuccessful instance creation task by following the procedure in :ref:`Deleting Instance Creation Tasks That Have Failed to Run `. Then, create the DCS instance again. If the DCS instance still fails to be created, contact customer service. + - There is the management plane and the tenant plane. The tenant plane is also called the pod zone. During the creation of a DCS instance, a VM is created in the pod zone. If the instance creation fails, the instance status changes to **Faulty**, and the error message "Failed to connect to the instance. Network exceptions may have occurred in the pod zone." is displayed, indicating that the management plane cannot be connected to the tenant plane. + +.. |image1| image:: /_static/images/en-us_image_0000001287445456.png diff --git a/umn/source/getting_started/index.rst b/umn/source/getting_started/index.rst new file mode 100644 index 0000000..a9979c3 --- /dev/null +++ b/umn/source/getting_started/index.rst @@ -0,0 +1,20 @@ +:original_name: en-us_topic_0054235809.html + +.. _en-us_topic_0054235809: + +Getting Started +=============== + +- :ref:`Setting Up Environments ` +- :ref:`Creating a DCS Instance ` +- :ref:`Accessing a DCS Redis Instance ` +- :ref:`Viewing Details of a DCS Instance ` + +.. toctree:: + :maxdepth: 1 + :hidden: + + setting_up_environments + creating_a_dcs_instance + accessing_a_dcs_redis_instance + viewing_details_of_a_dcs_instance diff --git a/umn/source/getting_started/setting_up_environments.rst b/umn/source/getting_started/setting_up_environments.rst new file mode 100644 index 0000000..5eb1795 --- /dev/null +++ b/umn/source/getting_started/setting_up_environments.rst @@ -0,0 +1,45 @@ +:original_name: en-us_topic_0077665192.html + +.. _en-us_topic_0077665192: + +Setting Up Environments +======================= + +To access DCS instances through a VPC, create a VPC and configure security groups and subnets for it before using DCS. + +A VPC provides an isolated, user-configurable, and user-manageable virtual network environment for DCS. Using VPCs enhances resource security and simplifies network deployment. + +Once you have created a VPC, you can use it for all DCS instances you subsequently create. + +Procedure +--------- + +#. Log in to the management console. + +#. Click |image1| in the upper left corner of the management console and select a region and a project. + +#. Click **Service List**, and choose **Network** > **Virtual Private Cloud** to launch the VPC console. + +#. On the **Dashboard** page, click **Create VPC**. + +#. Create a VPC as prompted, retaining the default values unless otherwise required. For more information on how to create a VPC, see the *Virtual Private Cloud User Guide*. + + After a VPC is created, a subnet is also created in the subnet. If the VPC needs more subnets, go to :ref:`6 `. Otherwise, go to :ref:`7 `. + +#. .. _en-us_topic_0077665192__li10954228154518: + + In the navigation pane, choose **Virtual Private Cloud**. On the **Virtual Private Cloud** page, click the name of the VPC in which you intend to create a subnet. On the **Subnets** tab page, click **Create Subnet**. + + Create a subnet as guided by the VPC console, retaining the default values of the subnet parameters unless otherwise required. + + For more information on how to create a subnet, see the *Virtual Private Cloud User Guide*. + +#. .. _en-us_topic_0077665192__li1940024225812: + + In the navigation pane, choose **Security Group**. On the **Security Group** page, click **Create Security Group**. + + Create a security group for the VPC, retaining the default values of the security group parameters unless otherwise required. + + For more information on how to create a security group, see the *Virtual Private Cloud User Guide*. + +.. |image1| image:: /_static/images/en-us_image_0000001287605372.png diff --git a/umn/source/getting_started/viewing_details_of_a_dcs_instance.rst b/umn/source/getting_started/viewing_details_of_a_dcs_instance.rst new file mode 100644 index 0000000..88c490a --- /dev/null +++ b/umn/source/getting_started/viewing_details_of_a_dcs_instance.rst @@ -0,0 +1,87 @@ +:original_name: en-us_topic_0054235812.html + +.. _en-us_topic_0054235812: + +Viewing Details of a DCS Instance +================================= + +Scenario +-------- + +On the DCS console, you can view details about a DCS instance. + +Procedure +--------- + +#. Log in to the management console. + +#. Click |image1| in the upper left corner of the management console and select a region. + +#. Click **Service List**, and choose **Database** > **Distributed Cache Service** to launch the DCS console. + +#. In the navigation pane, choose **Cache Manager**. + +#. On the **Cache Manager** page, search for DCS instances using any of the following methods: + + - Search by keyword. + + Enter a keyword to search. + + - Select attributes and enter their keywords to search. + + Currently, you can search by name, ID, IP address, AZ, status, and instance type. + + For more information on how to search, click the question mark to the right of the search box. + +#. On the DCS instance list, click the name of the chosen DCS instance to display more details about it. + + .. table:: **Table 1** Parameters on the Basic Information page of a DCS instance + + +-----------------------+----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------+ + | Section | Parameter | Description | + +=======================+============================+==============================================================================================================================================+ + | Instance Information | Name | Name of the selected DCS instance. To modify the instance name, click the |image2| icon. | + +-----------------------+----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------+ + | | Status | State of the chosen instance. | + +-----------------------+----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------+ + | | ID | ID of the chosen instance. | + +-----------------------+----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------+ + | | Cache Engine | Cache engine used by the chosen instance. Currently, only Redis 3.0 is supported. | + +-----------------------+----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------+ + | | Instance Type | Type of the selected instance. Currently, supported types include single-node, master/standby, Proxy Cluster. | + +-----------------------+----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------+ + | | Cache Size (GB) | Specification of the chosen instance. | + +-----------------------+----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------+ + | | Used/Available Memory (MB) | The used memory space and maximum available memory space of the chosen instance. | + | | | | + | | | The used memory space includes: | + | | | | + | | | - Size of data stored on the DCS instance | + | | | - Size of Redis-server buffers (including client buffer and repl-backlog) and internal data structures | + +-----------------------+----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------+ + | | Created | Time at which the chosen instance started to be created. | + +-----------------------+----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------+ + | | Run | Time at which the instance was created. | + +-----------------------+----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------+ + | | Maintenance | Time range for any scheduled maintenance activities on cache nodes of this DCS instance. To modify the time window, click the |image3| icon. | + +-----------------------+----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------+ + | | Description | Description of the chosen DCS instance. To modify the description, click the |image4| icon. | + +-----------------------+----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------+ + | Connection | Password Protected | Currently, you must enable password-protected access. | + +-----------------------+----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------+ + | | Connection Address | IP address and port number of the chosen instance. | + +-----------------------+----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------+ + | Network | AZ | Availability zone in which the cache node running the selected DCS instance resides. | + +-----------------------+----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------+ + | | VPC | VPC in which the selected DCS instance resides. | + +-----------------------+----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------+ + | | Subnet | Subnet in which the selected DCS instance resides. | + +-----------------------+----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------+ + | | Security Group | Security group that controls access to the chosen instance. To modify the security group, click the |image5| icon. | + +-----------------------+----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------+ + +.. |image1| image:: /_static/images/en-us_image_0000001287445456.png +.. |image2| image:: /_static/images/en-us_image_0000001340285317.jpg +.. |image3| image:: /_static/images/en-us_image_0000001340320673.jpg +.. |image4| image:: /_static/images/en-us_image_0000001287960790.jpg +.. |image5| image:: /_static/images/en-us_image_0000001340680421.jpg diff --git a/umn/source/glossary.rst b/umn/source/glossary.rst new file mode 100644 index 0000000..0338f13 --- /dev/null +++ b/umn/source/glossary.rst @@ -0,0 +1,8 @@ +:original_name: en-us_topic_0072429345.html + +.. _en-us_topic_0072429345: + +Glossary +======== + +For details about the terms involved in this document, see `Glossary `__. diff --git a/umn/source/index.rst b/umn/source/index.rst index 9112a17..536e919 100644 --- a/umn/source/index.rst +++ b/umn/source/index.rst @@ -2,3 +2,13 @@ Distributed Cache Service - User Guide ====================================== +.. toctree:: + :maxdepth: 1 + + introduction/index + getting_started/index + operation_guide/index + monitoring/index + faqs/index + glossary + change_history diff --git a/umn/source/introduction/accessing_dcs/how_to_access_dcs.rst b/umn/source/introduction/accessing_dcs/how_to_access_dcs.rst new file mode 100644 index 0000000..238cab1 --- /dev/null +++ b/umn/source/introduction/accessing_dcs/how_to_access_dcs.rst @@ -0,0 +1,16 @@ +:original_name: en-us_topic_0054235837.html + +.. _en-us_topic_0054235837: + +How to Access DCS +================= + +There are two ways to access DCS: + +- Using the management console + + The DCS provides a web-based management console. To launch the DCS console, create an account on the management console and log in, and then choose **Database** > **Distributed Cache Service** on the homepage. On the DCS console, you can create, restart, and delete DCS instances, and change their passwords. + +- Using APIs + + If you want to integrate DCS into a third-party system for secondary development, use APIs to access DCS. For more information about available APIs, see the *Distributed Cache Service API Reference*. diff --git a/umn/source/introduction/accessing_dcs/index.rst b/umn/source/introduction/accessing_dcs/index.rst new file mode 100644 index 0000000..e7c635a --- /dev/null +++ b/umn/source/introduction/accessing_dcs/index.rst @@ -0,0 +1,18 @@ +:original_name: en-us_topic_0054235836.html + +.. _en-us_topic_0054235836: + +Accessing DCS +============= + +- :ref:`How to Access DCS ` +- :ref:`Related Services ` +- :ref:`User Permissions ` + +.. toctree:: + :maxdepth: 1 + :hidden: + + how_to_access_dcs + related_services + user_permissions diff --git a/umn/source/introduction/accessing_dcs/related_services.rst b/umn/source/introduction/accessing_dcs/related_services.rst new file mode 100644 index 0000000..1d6a76a --- /dev/null +++ b/umn/source/introduction/accessing_dcs/related_services.rst @@ -0,0 +1,40 @@ +:original_name: en-us_topic_0054235808.html + +.. _en-us_topic_0054235808: + +Related Services +================ + +Virtual Private Cloud (VPC) +--------------------------- + +The VPC service enables users to create private, isolated virtual networks. DCS instances run in VPCs and use the IP addresses and bandwidths of VPCs. VPCs are based on security groups. A security group is a set of access control rules that implements access control for mutually trusted ECSs with the same security protection requirements in the same VPC. + +Elastic Cloud Server (ECS) +-------------------------- + +The ECS service provides scalable, on-demand cloud servers for secure, flexible, and efficient application environments, ensuring service reliability. After you create DCS instances, you can connect to them through ECSs. + +Cloud Trace Service (CTS) +------------------------- + +CTS provides a history of operations performed on cloud service resources. With CTS, you can query, audit, and review operations. Traces include operation time, resource objects, resource IDs, requesters' IP addresses, resource operation requests, and responses. + +Currently, CTS records the following operations on DCS instances: + +- Creating, starting, restarting, and deleting DCS instances +- Configuring Redis-specific parameters +- Changing instance passwords +- Modifying basic information + +Identity and Access Management (IAM) +------------------------------------ + +IAM provides identity authentication and permission management. It is used to authenticate access to DCS. + +Cloud Eye +--------- + +Cloud Eye is a secure, scalable monitoring platform. It monitors DCS service metrics and sends notifications if alarms or events occur. + +For details about DCS metrics, see :ref:`DCS Metrics `. diff --git a/umn/source/introduction/accessing_dcs/user_permissions.rst b/umn/source/introduction/accessing_dcs/user_permissions.rst new file mode 100644 index 0000000..6eefaee --- /dev/null +++ b/umn/source/introduction/accessing_dcs/user_permissions.rst @@ -0,0 +1,14 @@ +:original_name: en-us_topic_0054247786.html + +.. _en-us_topic_0054247786: + +User Permissions +================ + +The public cloud system provides two types of user permissions by default: user management and resource management. + +User management refers to the management of users, user groups, and user group rights. + +Resource management refers to the control operations that can be performed by users on cloud service resources. + +For details, see `Permissions `__. diff --git a/umn/source/introduction/advantages.rst b/umn/source/introduction/advantages.rst new file mode 100644 index 0000000..7c5db17 --- /dev/null +++ b/umn/source/introduction/advantages.rst @@ -0,0 +1,24 @@ +:original_name: en-us_topic_0054235833.html + +.. _en-us_topic_0054235833: + +Advantages +========== + +The advantages of DCS include: + +- Usability off the shelf + + You can create DCS instances with just a few clicks on the DCS console or by calling application programming interfaces (APIs). DCS responds to instance creation commands without requiring you to deal with complex underlying software and hardware. + +- Customizable specifications + + DCS instance specifications range from 2 GB to 512 GB, increasing the flexibility of DCS. + +- Reliability + + Data persistence, support for master/standby and Proxy Cluster modes, and automatic failover between cache nodes ensure data reliability and service availability. + +- Ease of maintenance + + You can create, restart, and delete DCS instances with just a few clicks on the DCS console. DCS continuously monitors and maintains DCS instances so that you can focus on application development. Service monitoring metrics include keys, the number of client connections, and processed commands. System monitoring metrics include memory, CPU, and network usage. diff --git a/umn/source/introduction/application_scenarios.rst b/umn/source/introduction/application_scenarios.rst new file mode 100644 index 0000000..10efdd8 --- /dev/null +++ b/umn/source/introduction/application_scenarios.rst @@ -0,0 +1,26 @@ +:original_name: en-us_topic_0054235832.html + +.. _en-us_topic_0054235832: + +Application Scenarios +===================== + +For e-commerce, video sharing, gaming, and other data-intensive applications, it is essential to retrieve data fast. The primary purpose of DCS is to provide fast yet inexpensive data retrieval. With DCS, you can retrieve data from in-memory data stores instead of relying entirely on slower disk-based databases. + +DCS instances are also fully managed. You no longer need to perform management tasks such as hardware provisioning, software patching, monitoring, or failure recovery. Consider using DCS when you need to cache the following types of data: + +- Web pages + + Caching the content of web pages improves page load times. The cached content can include static data such as Hypertext Markup Language (HTML) pages, Cascading Style Sheets (CSS), and images. + +- Status + + DCS provides quick and simple queries of session status and application-scaling status, enabling easy sharing of status information. + +- Application objects + + DCS serves as a level-2 cache at the service layer and provides data storage and access for external entities. Storing frequently requested data in DCS instances can off load databases and reduce access latency. + +- Events + + DCS provides continuous event querying, allowing streams of events to be processed as they occur. diff --git a/umn/source/introduction/dcs.rst b/umn/source/introduction/dcs.rst new file mode 100644 index 0000000..ec6b371 --- /dev/null +++ b/umn/source/introduction/dcs.rst @@ -0,0 +1,49 @@ +:original_name: en-us_topic_0054235826.html + +.. _en-us_topic_0054235826: + +DCS +=== + +Distributed Cache Service (DCS) is an online, distributed, in-memory cache service compatible with Redis. It is reliable, scalable, usable out of the box, and easy to manage, meeting your requirements for high read/write performance and fast data access. + +Clients can access DCS instances only when they are installed on (ECSs) and belong to the same virtual private cloud (VPC) as the DCS instances. + + +.. figure:: /_static/images/en-us_image_0000001287445428.png + :alt: **Figure 1** Accessing DCS instances + + **Figure 1** Accessing DCS instances + +.. note:: + + Like clients, DCS instances are also run on ECSs. A client must belong to the same VPC and subnet as the DCS instance it is attempting to access. + +DCS Redis +--------- + +DCS uses Redis 3.0, a storage system that supports multiple types of datastructures, including key-value pairs. It can be used in scenarios such as caching, event pub/sub, and high-speed queuing. Redis is networked and written in ANSI C. It supports direct read/write of strings, hashes, lists, queues, and sets. Redis workswith in-memory datasets and provides persistence. For more information about Redis, visit https://redis.io/. + +There are three deployment modes for DCS Redis instances: + +- Single-node + + Each DCS instance runs on only one cache node. Such DCS instances are mainly used for temporary data storage but are not suitable for high-reliability service scenarios. + + Single-node DCS instances support intensive concurrent read/write operations, but do not implement data persistence. Data will be deleted after single-node DCS instances are restarted. + +- Master/Standby + + DCS instances run in master/standby mode, providing higher availability than single-node DCS instances. + + - Each DCS instance runs on two cache nodes (one master and one standby), and supports data persistence. + - The standby node is invisible to the client and does not provide data read/write services. It is kept synchronized with the master node through data synchronization. + - The standby node takes over automatically if the master node fails. + +- Proxy Cluster + + DCS instances run in Proxy Cluster mode, providing higher instance specifications and performance than master/standby DCS instances: + + - Each DCS instance has at least three master nodes. Compared with master/standby DCS instances, DCS instances in Proxy Cluster mode support higher instance specifications and concurrency. + - Each master node has a redundant node. If a master node is faulty, the redundant node becomes the master node and provides data read/write services for users. + - Each redundant node is invisible to Redis clients, and it is kept synchronized with its master node through data synchronization. diff --git a/umn/source/introduction/dcs_instance_specifications.rst b/umn/source/introduction/dcs_instance_specifications.rst new file mode 100644 index 0000000..6ee29b0 --- /dev/null +++ b/umn/source/introduction/dcs_instance_specifications.rst @@ -0,0 +1,72 @@ +:original_name: en-us_topic_0054235835.html + +.. _en-us_topic_0054235835: + +DCS Instance Specifications +=========================== + +For each single-node DCS Redis instance, the available memory is less than the total memory because some memory is reserved for system overhead, as shown in :ref:`Table 1 `. + +.. _en-us_topic_0054235835__table2399016819: + +.. table:: **Table 1** Specifications of single-node DCS Redis 3.0 instances + + +-----------------+------------------+-----------------------------+---------------------------+ + | Total Memory | Available Memory | Maximum Connections Allowed | Assured/Maximum Bandwidth | + | | | | | + | (GB) | (GB) | (Count) | (Mbit/s) | + +=================+==================+=============================+===========================+ + | 2 | 1.5 | 10,000 | 42/512 | + +-----------------+------------------+-----------------------------+---------------------------+ + | 4 | 3.2 | 10,000 | 64/1,536 | + +-----------------+------------------+-----------------------------+---------------------------+ + | 8 | 6.8 | 10,000 | 64/1,536 | + +-----------------+------------------+-----------------------------+---------------------------+ + | 16 | 13.6 | 10,000 | 85/3,072 | + +-----------------+------------------+-----------------------------+---------------------------+ + | 32 | 27.2 | 10,000 | 85/3,072 | + +-----------------+------------------+-----------------------------+---------------------------+ + | 64 | 58.2 | 12,000 | 128/5,120 | + +-----------------+------------------+-----------------------------+---------------------------+ + +For each master/standby DCS Redis instance, the available memory is less than that of a single-node DCS Redis instance because some memory is reserved for data persistence, as shown in :ref:`Table 2 `. The available memory of a master/standby instance can be adjusted to support background tasks such as data persistence and master/standby synchronization. + +.. _en-us_topic_0054235835__table1540218117813: + +.. table:: **Table 2** Specifications of master/standby DCS Redis 3.0 instances + + +-----------------+------------------+-----------------------------+---------------------------+ + | Total Memory | Available Memory | Maximum Connections Allowed | Assured/Maximum Bandwidth | + | | | | | + | (GB) | (GB) | (Count) | (Mbit/s) | + +=================+==================+=============================+===========================+ + | 2 | 1.5 | 10,000 | 42/512 | + +-----------------+------------------+-----------------------------+---------------------------+ + | 4 | 3.2 | 10,000 | 64/1,536 | + +-----------------+------------------+-----------------------------+---------------------------+ + | 8 | 6.4 | 10,000 | 64/1,536 | + +-----------------+------------------+-----------------------------+---------------------------+ + | 16 | 12.8 | 10,000 | 85/3,072 | + +-----------------+------------------+-----------------------------+---------------------------+ + | 32 | 25.6 | 10,000 | 85/3,072 | + +-----------------+------------------+-----------------------------+---------------------------+ + | 64 | 51.2 | 12,000 | 128/5,120 | + +-----------------+------------------+-----------------------------+---------------------------+ + +In addition to larger memory, Proxy Cluster instances feature more connections allowed and higher bandwidth allowed than single-node and master/standby instances. + +.. table:: **Table 3** Specifications of Proxy Cluster DCS Redis 3.0 instances + + +-----------------+------------------+-----------------------------+---------------------------+ + | Total Memory | Available Memory | Maximum Connections Allowed | Assured/Maximum Bandwidth | + | | | | | + | (GB) | (GB) | | (Mbit/s) | + +=================+==================+=============================+===========================+ + | 64 | 64 | 90,000 | 600/5,120 | + +-----------------+------------------+-----------------------------+---------------------------+ + | 128 | 128 | 180,000 | 600/5,120 | + +-----------------+------------------+-----------------------------+---------------------------+ + | 256 | 256 | 240,000 | 600/5,120 | + +-----------------+------------------+-----------------------------+---------------------------+ + | 512 | 512 | 480,000 | 600/5,120 | + +-----------------+------------------+-----------------------------+---------------------------+ diff --git a/umn/source/introduction/index.rst b/umn/source/introduction/index.rst new file mode 100644 index 0000000..2eb3ecf --- /dev/null +++ b/umn/source/introduction/index.rst @@ -0,0 +1,24 @@ +:original_name: en-us_topic_0054235816.html + +.. _en-us_topic_0054235816: + +Introduction +============ + +- :ref:`DCS ` +- :ref:`Application Scenarios ` +- :ref:`Advantages ` +- :ref:`Redis Command Compatibility ` +- :ref:`DCS Instance Specifications ` +- :ref:`Accessing DCS ` + +.. toctree:: + :maxdepth: 1 + :hidden: + + dcs + application_scenarios + advantages + redis_command_compatibility + dcs_instance_specifications + accessing_dcs/index diff --git a/umn/source/introduction/redis_command_compatibility.rst b/umn/source/introduction/redis_command_compatibility.rst new file mode 100644 index 0000000..a98822f --- /dev/null +++ b/umn/source/introduction/redis_command_compatibility.rst @@ -0,0 +1,271 @@ +:original_name: dcs-ug-180522002.html + +.. _dcs-ug-180522002: + +Redis Command Compatibility +=========================== + +This section describes DCS's compatibility with Redis commands, including supported commands, disabled commands, unsupported scripts and commands of later Redis versions, and restrictions on command usage. + +For more information about the command syntax, visit the `Redis official website `__. + +DCS for Redis instances support most Redis commands. Any client compatible with the Redis protocol can access DCS. + +- For security purposes, some Redis commands are disabled in DCS. For details, see :ref:`Commands Disabled by DCS for Redis 3.0 `. +- Some Redis commands have usage restrictions, which are described in :ref:`Other Command Usage Restrictions `. +- Some Redis commands are supported by cluster DCS instances for multi-key operations in the same slot. For details, see :ref:`Table 4 `. + +Commands Supported by DCS for Redis 3.0 +--------------------------------------- + +The following lists commands supported by DCS for Redis 3.0. + +.. note:: + + Commands available since later Redis versions are not supported by earlier versions. Run a command on redis-cli to check whether it is supported by DCS for Redis. If the message "(error) ERR unknown command" is returned, the command is not supported. + +.. table:: **Table 1** Commands supported by DCS for Redis 3.0 + + +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Category | Command | + +===================================+=====================================================================================================================================================================================================+ + | Key | DEL, DUMP, EXISTS, EXPIRE, MOVE, PERSISI, PTTL, RANDOMKEY, RENAME, RENAMENX, RESTORE, SORT, TTL, TYPE, SCAN, OBJIECT | + +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | String | APPEND, BITCOUNT, BITOP, BITPOS, DECR, DECRBY, GET, GETRANGE, GETSET, INCR, INCRBY, INCRBYFLOAT, MGET, MSET, MSETNX, PSETEX, SET, SETBIT, SETEX, SETNX, SETRANGE, STRLEN | + +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Hash | HDEL, HEXISTS, HGET, HGETALL, HINCRBY, HINCRBYFLOAT, HKEYS, HMGET, HMSET, HSET, HSETNX, HVALS, HSCAN | + +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | List | BLPOP, BRPOP, BRPOPLRUSH, LINDEX, LINSERT, LLEN, LPOP, LPUSHX, LRANGE, LREM, LSET, LTRIM, RPOP, RPOPLPU, RPOPLPUSH, RPUSH, RPUSHX | + | | | + | | .. note:: | + | | | + | | Proxy Cluster Redis 3.0 instances do not support **BLPOP**, **BRPOP**, and **BRPOPLRUSH** commands. | + +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Set | SADD, SCARD, SDIFF, SDIFFSTORE, SINTER, SINTERSTORE, SISMEMBER, SMEMBERS, SMOVE, SPOP, SRANDMEMBER, SREM, SUNION, SUNIONSTORE, SSCAN | + +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Sorted set | ZADD, ZCARD, ZCOUNT, ZINCRBY, ZRANGE, ZRANGEBYSCORE, ZRANK, ZREMRANGEBYRANK, ZREMRANGEBYCORE, ZREVRANGE, ZREVRANGEBYSCORE, ZREVRANK, ZSCORE, ZUNIONSTORE, ZINTERSTORE, ZSCAN, ZRANGEBYLEX | + +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | HyperLogLog | PFADD, PFCOUNT, PFMERGE | + +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Pub/Sub | PSUBSCRIBE, PUBLISH, PUBSUB, PUNSUBSCRIBE, SUBSCRIBE, UNSUBSCRIBE | + +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Transaction | DISCARD, EXEC, MULTI, UNWATCH, WATCH | + +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Connection | AUTH, ECHO, PING, QUIT, SELECT | + +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Server | FLUSHALL, FLUSHDB, DBSIZE, TIME, INFO, KEYS, CLIENT KILL, CLIENT LIST, CLIENT GETNAME, CLIENT SETNAME, CONFIG GET, MONITOR, SLOWLOG, ROLE | + | | | + | | .. note:: | + | | | + | | - Proxy Cluster Redis 3.0 instances do not support CLIENT commands, including **CLIENT KILL**, **CLIENT GETNAME**, **CLIENT LIST**, **CLIENT SETNAME**, **CLIENT PAUSE**, and **CLIENT REPLY**. | + | | - Proxy Cluster Redis 3.0 instances do not support the **MONITOR** command. | + +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Scripting | EVAL, EVALSHA, SCRIPT EXISTS, SCRIPT FLUSH, SCRIPT KILL, SCRIPT LOAD | + +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Geo | GEOADD, GEOHASH, GEOPOS, GEODIST, GEORADIUS, GEORADIUSBYMEMBER | + +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +.. _dcs-ug-180522002__section0341135531914: + +Commands Disabled by DCS for Redis 3.0 +-------------------------------------- + +Redis APIs of single-node and master/standby DCS instances are compatible with open-source Redis for data access. For ease of use and security purposes, some management operations cannot be initiated from a Redis client. Related commands are listed in :ref:`Table 2 `. + +.. _dcs-ug-180522002__table31856418216: + +.. table:: **Table 2** Redis commands disabled in single-node and master/standby Redis 3.0 instances + + +----------------+------------------------------------------------------------------------------------------------------------------------------------------------+ + | Command | Description | + +================+================================================================================================================================================+ + | **Key** | | + +----------------+------------------------------------------------------------------------------------------------------------------------------------------------+ + | MIGRATE | Transfers a key from one Redis instance to another. | + +----------------+------------------------------------------------------------------------------------------------------------------------------------------------+ + | **Server** | | + +----------------+------------------------------------------------------------------------------------------------------------------------------------------------+ + | SLAVEOF | Changes the replication settings of a replica on the fly. | + +----------------+------------------------------------------------------------------------------------------------------------------------------------------------+ + | SHUTDOWN | Stops all the clients and quits the Redis process. | + +----------------+------------------------------------------------------------------------------------------------------------------------------------------------+ + | LASTSAVE | Returns the time of the last successful data persistence to disk. | + +----------------+------------------------------------------------------------------------------------------------------------------------------------------------+ + | DEBUG commands | Debugging command that should not be used by clients. | + +----------------+------------------------------------------------------------------------------------------------------------------------------------------------+ + | COMMAND | Returns array reply of details about all Redis commands. | + +----------------+------------------------------------------------------------------------------------------------------------------------------------------------+ + | SAVE | Performs a synchronous save on disk, producing a point in time snapshot of all the data inside the Redis instance, in the form of an RDB file. | + +----------------+------------------------------------------------------------------------------------------------------------------------------------------------+ + | BGSAVE | Asynchronously saves the database on disk. | + +----------------+------------------------------------------------------------------------------------------------------------------------------------------------+ + | BGREWRITEAOF | Starts an Append Only File (AOF) rewrite process. | + +----------------+------------------------------------------------------------------------------------------------------------------------------------------------+ + +In additional to these commands, Proxy Cluster Redis 3.0 instances do not support the commands listed in :ref:`Table 3 `. + +.. _dcs-ug-180522002__table122021410155210: + +.. table:: **Table 3** Redis commands disabled in Proxy Cluster Redis 3.0 instances + + +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Command | Description | + +===================================+===========================================================================================================================================================================================================+ + | **Server** | | + +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | SYNC | An internal command used for full replication. | + +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | PSYNC | An internal command used for partial replication. | + +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | MONITOR | Streams back every command processed by the Redis server for debugging. | + +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | CLIENT commands | CLIENT KILL, CLIENT GETNAME, CLIENT LIST, CLIENT SETNAME, CLIENT PAUSE, and CLIENT REPLY. | + +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | OBJECT | Debugging command that should not be used by clients. | + +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ROLE | Returns the role of the instance node. | + +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | **Transaction** | | + +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | DISCARD | Flushes all previously queued commands in a transaction. | + +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | EXEC | Executes all previously queued commands in a transaction. | + +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | MULTI | Marks the start of a transaction block. | + +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | UNWATCH | Flushes all the previously watched keys for a transaction. | + +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | WATCH | Marks the given key or keys to be watched. If the key or keys are modified by other commands before WATCH is executed, the transaction is interrupted. | + +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | **Connection** | | + +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | SELECT | Selects the Redis database. Note: Parameters of the **SELECT** command can only be set to **0**. | + +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | **Keys** | | + +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | MOVE | Moves *key* of the currently selected database to the specified destination database. | + +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | **Cluster** | | + +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | CLUSTER | Used for cluster management. | + +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | **codis** (Proxy Cluster) | | + +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | TIME | Returns the current server time. | + +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | SLOTSINFO | Returns the number of slots and the size of each slot in Redis. | + +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | SLOTSDEL | Deletes all key-value pairs in multiple slots in Redis. | + +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | SLOTSMGRTSLOT | Randomly migrates a key-value pair in a slot to the destination. | + +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | SLOTSMGRTONE | Migrates a specified key-value pair to the destination. | + +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | SLOTSCHECK | Checks whether slots meet the following consistency requirements: | + | | | + | | - All the keys in the slots have a corresponding value in the database. | + | | - All the keys in the database have a value in the corresponding slot. | + +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | SLOTSMGRTTAGSLOT | Migrates all key-value pairs with the same tag as a randomly selected key in a slot. | + +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | SLOTSMGRTTAGONE | Migrates all key-value pairs with the same tag as a specified key. | + +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | **List** | | + +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | BLPOP | The blocking version of **LPOP** because it blocks the connection when there are no elements to pop from any of the given lists until the specified timeout has expired or a non-empty element is popped. | + +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | BRPOP | The blocking version of **RPOP** because it blocks the connection when there are no elements to pop from any of the given lists until the specified timeout has expired or a non-empty element is popped. | + +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | BRPOPLPUSH | The blocking variant of **RPOPLPUSH**. When *source* contains elements, this command behaves exactly like **RPOPLPUSH**. | + +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +Restricted Redis Commands +------------------------- + +Some Redis commands are supported by cluster DCS instances for multi-key operations in the same slot. For details, see :ref:`Table 4 `. + +.. _dcs-ug-180522002__table7589193113396: + +.. table:: **Table 4** Redis commands restricted in cluster DCS instances. + + +-----------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Category | Description | + +=================+===================================================================================================================================================================+ + | **Set** | | + +-----------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | SINTER | Returns the members of the set resulting from the intersection of all the given sets. | + +-----------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | SINTERSTORE | Equal to **SINTER**, but instead of returning the result set, it is stored in *destination*. | + +-----------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | SUNION | Returns the members of the set resulting from the union of all the given sets. | + +-----------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | SUNIONSTORE | Equal to **SUNION**, but instead of returning the result set, it is stored in *destination*. | + +-----------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | SDIFF | Returns the members of the set resulting from the difference between the first set and all the successive sets. | + +-----------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | SDIFFSTORE | Equal to **SDIFF**, but instead of returning the result set, it is stored in *destination*. | + +-----------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | SMOVE | Moves **member** from the set at **source** to the set at *destination*. | + +-----------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | **Sorted Set** | | + +-----------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ZUNIONSTORE | Computes the union of *numkeys* sorted sets given by the specified keys. | + +-----------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ZINTERSTORE | Computes the intersection of *numkeys* sorted sets given by the specified keys. | + +-----------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | **HyperLogLog** | | + +-----------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | PFCOUNT | Returns the approximated cardinality computed by the HyperLogLog data structure stored at the specified variable. | + +-----------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | PFMERGE | Merges multiple HyperLogLog values into a unique value. | + +-----------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | **Key** | | + +-----------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | RENAME | Renames *key* to *newkey*. | + +-----------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | RENAMENX | Renames *key* to *newkey* if *newkey* does not yet exist. | + +-----------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | BITOP | Performs a bitwise operation between multiple keys (containing string values) and stores the result in the destination key. | + +-----------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | RPOPLPUSH | Returns and removes the last element (tail) of the list stored at source, and pushes the element at the first element (head) of the list stored at *destination*. | + +-----------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | **String** | | + +-----------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | MSETNX | Sets the given keys to their respective values. | + +-----------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +.. note:: + + While running commands that take a long time to run, such as **FLUSHALL**, DCS instances may not respond to other commands and change to the faulty state. After the command finishes executing, the instance will return to normal. + +.. _dcs-ug-180522002__section834293511127: + +Other Command Usage Restrictions +-------------------------------- + +**Key commands:** + +In case of a large amount of cached data, running a **Keys** command may block the execution of other commands for a long time or occupy exceptionally large memory. Therefore, when running a **Keys** command, describe the exact pattern and do not use fuzzy **keys \***. **keys \*** can be used during commissioning or when the number of keys does not exceed 5 million. Otherwise, the service cannot run properly. + +**Server commands:** + +- While running commands that take a long time to run, such as **FLUSHALL**, DCS instances may not respond to other commands and change to the faulty state. After the command finishes executing, the instance will return to normal. +- When the **FLUSHDB** or **FLUSHALL** command is run, execution of other service commands may be blocked for a long time in case of a large amount of cached data. + +**EVAL and EVALSHA commands:** + +- When the **EVAL** or **EVALSHA** command is run, at least one key must be contained in the command parameter. Otherwise, the error message "ERR eval/evalsha numkeys must be bigger than zero in redis cluster mode" is displayed. +- When the **EVAL** or **EVALSHA** command is run, a cluster DCS Redis instance uses the first key to compute slots. Ensure that the keys to be operated in your code are in the same slot. For details, visit http://redis.io/commands. +- For the **EVAL** command: + + - You are advised to learn the Lua script features of Redis before running the **EVAL** command. For details, see https://redis.io/commands/eval. + - The execution timeout time of a Lua script is 5 seconds. Time-consuming statements such as long-time sleep and large loop statements should be avoided. + - When calling a Lua script, do not use random functions to specify keys. Otherwise, the execution results are inconsistent on the master and standby nodes. + +**Others:** + +- The time limit for executing a Redis command is 15 seconds. To prevent other services from failing, a master/replica switchover will be triggered after the command execution times out. + +- Proxy Cluster DCS Redis instances created before July 10, 2018 must be upgraded to support the following commands: + + SINTER, SDIFF, SUNION, PFCOUNT, PFMERGE, SINTERSTORE, SUNIONSTORE, SDIFFSTORE, SMOVE, ZUNIONSTORE, ZINTERSTORE, EVAL, EVALSHA, BITOP, RENAME, RENAMENX, RPOPLPUSH, MSETNX, SCRIPT LOAD, SCRIPT KILL, SCRIPT EXISTS, SCRIPT FLUSH. diff --git a/umn/source/monitoring/dcs_metrics.rst b/umn/source/monitoring/dcs_metrics.rst new file mode 100644 index 0000000..9d6cefa --- /dev/null +++ b/umn/source/monitoring/dcs_metrics.rst @@ -0,0 +1,258 @@ +:original_name: dcs-ug-0326019.html + +.. _dcs-ug-0326019: + +DCS Metrics +=========== + +Introduction +------------ + +This section describes DCS metrics reported to Cloud Eye as well as their namespaces and dimensions. You can use the Cloud Eye console or APIs to query the DCS metrics and alarms. + +Namespace +--------- + +SYS.DCS + +.. note:: + + **SYS.DCS** is the namespace of DCS. Cloud Eye determines which cloud service is reporting metric data based on the namespace. + +DCS Redis 3.0 Instance Metrics +------------------------------ + +.. note:: + + The **Monitored Objects and Dimensions** column lists instances and dimensions that support the corresponding metrics. + +.. table:: **Table 1** DCS Redis 3.0 instance metrics + + +----------------------------+----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------+------------------------------------------------------------------+------------------------------+ + | Metric ID | Metric | Description | Value Range | Monitored Object and Dimension | Monitoring Period (Raw Data) | + +============================+============================+========================================================================================================================================================================================+=============+==================================================================+==============================+ + | cpu_usage | CPU Usage | CPU consumed by the monitored object | 0-100% | Monitored object: | 1 minute | + | | | | | | | + | | | Unit: % | | Single-node, master/standby, or Proxy Cluster DCS Redis instance | | + | | | | | | | + | | | | | Dimension: | | + | | | | | | | + | | | | | dcs_instance_id | | + +----------------------------+----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------+------------------------------------------------------------------+------------------------------+ + | memory_usage | Memory Usage | Memory consumed by the monitored object | 0-100% | Monitored object: | 1 minute | + | | | | | | | + | | | Unit: % | | Single-node, master/standby, or Proxy Cluster DCS Redis instance | | + | | | | | | | + | | | | | Dimension: | | + | | | | | | | + | | | | | dcs_instance_id | | + +----------------------------+----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------+------------------------------------------------------------------+------------------------------+ + | net_in_throughput | Network Input Throughput | Inbound throughput per second on a port | >= 0 | Monitored object: | 1 minute | + | | | | | | | + | | | Unit: KB/s | | Single-node, master/standby, or Proxy Cluster DCS Redis instance | | + | | | | | | | + | | | | | Dimension: | | + | | | | | | | + | | | | | dcs_instance_id | | + +----------------------------+----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------+------------------------------------------------------------------+------------------------------+ + | net_out_throughput | Network Output Throughput | Outbound throughput per second on a port | >= 0 | Monitored object: | 1 minute | + | | | | | | | + | | | Unit: KB/s | | Single-node, master/standby, or Proxy Cluster DCS Redis instance | | + | | | | | | | + | | | | | Dimension: | | + | | | | | | | + | | | | | dcs_instance_id | | + +----------------------------+----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------+------------------------------------------------------------------+------------------------------+ + | connected_clients | Connected Clients | Number of connected clients (excluding those to standby nodes) | >= 0 | Monitored object: | 1 minute | + | | | | | | | + | | | | | Single-node, master/standby, or Proxy Cluster DCS Redis instance | | + | | | | | | | + | | | | | Dimension: | | + | | | | | | | + | | | | | dcs_instance_id | | + +----------------------------+----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------+------------------------------------------------------------------+------------------------------+ + | client_longest_out_list | Client Longest Output List | Longest output list among current client connections | >= 0 | Monitored object: | 1 minute | + | | | | | | | + | | | | | Single-node, master/standby, or Proxy Cluster DCS Redis instance | | + | | | | | | | + | | | | | Dimension: | | + | | | | | | | + | | | | | dcs_instance_id | | + +----------------------------+----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------+------------------------------------------------------------------+------------------------------+ + | client_biggest_in_buf | Client Biggest Input Buf | Maximum input data length among current client connections | >= 0 | Monitored object: | 1 minute | + | | | | | | | + | | | Unit: byte | | Single-node, master/standby, or Proxy Cluster DCS Redis instance | | + | | | | | | | + | | | | | Dimension: | | + | | | | | | | + | | | | | dcs_instance_id | | + +----------------------------+----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------+------------------------------------------------------------------+------------------------------+ + | blocked_clients | Blocked Clients | Number of clients suspended by block operations such as BLPOP, BRPOP, and BRPOPLPUSH | >= 0 | Monitored object: | 1 minute | + | | | | | | | + | | | | | Single-node, master/standby, or Proxy Cluster DCS Redis instance | | + | | | | | | | + | | | | | Dimension: | | + | | | | | | | + | | | | | dcs_instance_id | | + +----------------------------+----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------+------------------------------------------------------------------+------------------------------+ + | used_memory | Used Memory | Number of bytes used by the Redis server | >= 0 | Monitored object: | 1 minute | + | | | | | | | + | | | Unit: MB | | Single-node, master/standby, or Proxy Cluster DCS Redis instance | | + | | | | | | | + | | | | | Dimension: | | + | | | | | | | + | | | | | dcs_instance_id | | + +----------------------------+----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------+------------------------------------------------------------------+------------------------------+ + | used_memory_rss | Used Memory RSS | Resident set size (RSS) memory that the Redis server has used, which is the memory that actually resides in the memory, including all stack and heap memory but not swapped-out memory | >= 0 | Monitored object: | 1 minute | + | | | | | | | + | | | Unit: MB | | Single-node, master/standby, or Proxy Cluster DCS Redis instance | | + | | | | | | | + | | | | | Dimension: | | + | | | | | | | + | | | | | dcs_instance_id | | + +----------------------------+----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------+------------------------------------------------------------------+------------------------------+ + | used_memory_peak | Used Memory Peak | Peak memory consumed by Redis since the Redis server last started | >= 0 | Monitored object: | 1 minute | + | | | | | | | + | | | Unit: MB | | Single-node, master/standby, or Proxy Cluster DCS Redis instance | | + | | | | | | | + | | | | | Dimension: | | + | | | | | | | + | | | | | dcs_instance_id | | + +----------------------------+----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------+------------------------------------------------------------------+------------------------------+ + | used_memory_lua | Used Memory Lua | Number of bytes used by the Lua engine | >= 0 | Monitored object: | 1 minute | + | | | | | | | + | | | Unit: MB | | Single-node, master/standby, or Proxy Cluster DCS Redis instance | | + | | | | | | | + | | | | | Dimension: | | + | | | | | | | + | | | | | dcs_instance_id | | + +----------------------------+----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------+------------------------------------------------------------------+------------------------------+ + | memory_frag_ratio | Memory Fragmentation Ratio | Current memory fragmentation, which is the ratio between **used_memory_rss**/**used_memory**. | >= 0 | Monitored object: | 1 minute | + | | | | | | | + | | | | | Single-node, master/standby, or Proxy Cluster DCS Redis instance | | + | | | | | | | + | | | | | Dimension: | | + | | | | | | | + | | | | | dcs_instance_id | | + +----------------------------+----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------+------------------------------------------------------------------+------------------------------+ + | total_connections_received | New Connections | Number of connections received during the monitoring period | >= 0 | Monitored object: | 1 minute | + | | | | | | | + | | | | | Single-node, master/standby, or Proxy Cluster DCS Redis instance | | + | | | | | | | + | | | | | Dimension: | | + | | | | | | | + | | | | | dcs_instance_id | | + +----------------------------+----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------+------------------------------------------------------------------+------------------------------+ + | total_commands_processed | Commands Processed | Number of commands processed during the monitoring period | >= 0 | Monitored object: | 1 minute | + | | | | | | | + | | | | | Single-node, master/standby, or Proxy Cluster DCS Redis instance | | + | | | | | | | + | | | | | Dimension: | | + | | | | | | | + | | | | | dcs_instance_id | | + +----------------------------+----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------+------------------------------------------------------------------+------------------------------+ + | instantaneous_ops | Ops per Second | Number of commands processed per second | >= 0 | Monitored object: | 1 minute | + | | | | | | | + | | | | | Single-node, master/standby, or Proxy Cluster DCS Redis instance | | + | | | | | | | + | | | | | Dimension: | | + | | | | | | | + | | | | | dcs_instance_id | | + +----------------------------+----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------+------------------------------------------------------------------+------------------------------+ + | total_net_input_bytes | Network Input Bytes | Number of bytes received during the monitoring period | >= 0 | Monitored object: | 1 minute | + | | | | | | | + | | | Unit: KB | | Single-node, master/standby, or Proxy Cluster DCS Redis instance | | + | | | | | | | + | | | | | Dimension: | | + | | | | | | | + | | | | | dcs_instance_id | | + +----------------------------+----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------+------------------------------------------------------------------+------------------------------+ + | total_net_output_bytes | Network Output Bytes | Number of bytes sent during the monitoring period | >= 0 | Monitored object: | 1 minute | + | | | | | | | + | | | Unit: KB | | Single-node, master/standby, or Proxy Cluster DCS Redis instance | | + | | | | | | | + | | | | | Dimension: | | + | | | | | | | + | | | | | dcs_instance_id | | + +----------------------------+----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------+------------------------------------------------------------------+------------------------------+ + | instantaneous_input_kbps | Input Flow | Instantaneous input traffic | >= 0 KB/s | Monitored object: | 1 minute | + | | | | | | | + | | | Unit: KB/s | | Single-node, master/standby, or Proxy Cluster DCS Redis instance | | + | | | | | | | + | | | | | Dimension: | | + | | | | | | | + | | | | | dcs_instance_id | | + +----------------------------+----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------+------------------------------------------------------------------+------------------------------+ + | instantaneous_output_kbps | Output Flow | Instantaneous output traffic | >= 0 KB/s | Monitored object: | 1 minute | + | | | | | | | + | | | Unit: KB/s | | Single-node, master/standby, or Proxy Cluster DCS Redis instance | | + | | | | | | | + | | | | | Dimension: | | + | | | | | | | + | | | | | dcs_instance_id | | + +----------------------------+----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------+------------------------------------------------------------------+------------------------------+ + | rejected_connections | Rejected Connections | Number of connections that have exceeded maxclients and been rejected during the monitoring period | >= 0 | Monitored object: | 1 minute | + | | | | | | | + | | | | | Single-node, master/standby, or Proxy Cluster DCS Redis instance | | + | | | | | | | + | | | | | Dimension: | | + | | | | | | | + | | | | | dcs_instance_id | | + +----------------------------+----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------+------------------------------------------------------------------+------------------------------+ + | expired_keys | Expired Keys | Number of keys that have expired and been deleted during the monitoring period | >= 0 | Monitored object: | 1 minute | + | | | | | | | + | | | | | Single-node, master/standby, or Proxy Cluster DCS Redis instance | | + | | | | | | | + | | | | | Dimension: | | + | | | | | | | + | | | | | dcs_instance_id | | + +----------------------------+----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------+------------------------------------------------------------------+------------------------------+ + | evicted_keys | Evicted Keys | Number of keys that have been evicted and deleted during the monitoring period | >= 0 | Monitored object: | 1 minute | + | | | | | | | + | | | | | Single-node, master/standby, or Proxy Cluster DCS Redis instance | | + | | | | | | | + | | | | | Dimension: | | + | | | | | | | + | | | | | dcs_instance_id | | + +----------------------------+----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------+------------------------------------------------------------------+------------------------------+ + | keyspace_hits | Keyspace Hits | Number of successful lookups of keys in the main dictionary during the monitoring period | >= 0 | Monitored object: | 1 minute | + | | | | | | | + | | | | | Single-node, master/standby, or Proxy Cluster DCS Redis instance | | + | | | | | | | + | | | | | Dimension: | | + | | | | | | | + | | | | | dcs_instance_id | | + +----------------------------+----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------+------------------------------------------------------------------+------------------------------+ + | keyspace_misses | Keyspace Misses | Number of failed lookups of keys in the main dictionary during the monitoring period | >= 0 | Monitored object: | 1 minute | + | | | | | | | + | | | | | Single-node, master/standby, or Proxy Cluster DCS Redis instance | | + | | | | | | | + | | | | | Dimension: | | + | | | | | | | + | | | | | dcs_instance_id | | + +----------------------------+----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------+------------------------------------------------------------------+------------------------------+ + | pubsub_channels | PubSub Channels | Number of Pub/Sub channels | >= 0 | Monitored object: | 1 minute | + | | | | | | | + | | | | | Single-node, master/standby, or Proxy Cluster DCS Redis instance | | + | | | | | | | + | | | | | Dimension: | | + | | | | | | | + | | | | | dcs_instance_id | | + +----------------------------+----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------+------------------------------------------------------------------+------------------------------+ + | pubsub_patterns | PubSub Patterns | Number of Pub/Sub patterns | >= 0 | Monitored object: | 1 minute | + | | | | | | | + | | | | | Single-node, master/standby, or Proxy Cluster DCS Redis instance | | + | | | | | | | + | | | | | Dimension: | | + | | | | | | | + | | | | | dcs_instance_id | | + +----------------------------+----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------+------------------------------------------------------------------+------------------------------+ + +Dimensions +---------- + +=============== ================== +Key Value +=============== ================== +dcs_instance_id DCS Redis instance +=============== ================== diff --git a/umn/source/monitoring/index.rst b/umn/source/monitoring/index.rst new file mode 100644 index 0000000..5925135 --- /dev/null +++ b/umn/source/monitoring/index.rst @@ -0,0 +1,20 @@ +:original_name: dcs-en-ug-180424001.html + +.. _dcs-en-ug-180424001: + +Monitoring +========== + +Cloud Eye is a secure, scalable monitoring platform. It monitors DCS metrics, and sends notifications if alarms are triggered or events occur. + +- :ref:`DCS Metrics ` +- :ref:`Viewing DCS Metrics ` +- :ref:`Setting Alarm Rules for Critical Metrics ` + +.. toctree:: + :maxdepth: 1 + :hidden: + + dcs_metrics + viewing_dcs_metrics + setting_alarm_rules_for_critical_metrics diff --git a/umn/source/monitoring/setting_alarm_rules_for_critical_metrics.rst b/umn/source/monitoring/setting_alarm_rules_for_critical_metrics.rst new file mode 100644 index 0000000..1d434ca --- /dev/null +++ b/umn/source/monitoring/setting_alarm_rules_for_critical_metrics.rst @@ -0,0 +1,79 @@ +:original_name: dcs-ug-190905001.html + +.. _dcs-ug-190905001: + +Setting Alarm Rules for Critical Metrics +======================================== + +As listed in :ref:`DCS Metrics `, Cloud Eye monitors a wide variety of DCS metrics. + +Among all the metrics, the ones listed in the following table are of particular importance. Configure alarm rules for these metrics to be notified immediately after the set thresholds are reached. + +.. table:: **Table 1** Metrics to set alarm rules for + + +-------------------+-------------------+-----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Metric ID | Metric | Recommended Threshold | Description | + +===================+===================+=======================+===============================================================================================================================================================================================+ + | cpu_usage | CPU Usage | 80 | CPU consumed by the monitored object | + | | | | | + | | | | The recommended threshold indicates that an alarm will be triggered when the CPU usage of the instance reaches 80% for the set number of consecutive periods during the monitoring period. | + | | | | | + | | | | For example, an alarm may be triggered if the average CPU usage >= 80% for 3 consecutive periods of 1 minute. | + +-------------------+-------------------+-----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | memory_usage | Memory Usage | 80 | Memory consumed by the monitored object | + | | | | | + | | | | The recommended threshold indicates that an alarm will be triggered when the memory usage of the instance reaches 80% for the set number of consecutive periods during the monitoring period. | + | | | | | + | | | | For example, an alarm may be triggered if the average memory usage >= 80% for 3 consecutive periods of 1 minute. | + +-------------------+-------------------+-----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | connected_clients | Connected Clients | 8,000 | Number of connected clients (excluding those to standby nodes) | + | | | | | + | | | | The minimum threshold is 8,000. Set the threshold to 80% of the maximum allowed connections indicated in the instance specifications. | + | | | | | + | | | | For example, an alarm may be triggered if the average number of connected clients >= 8,000 for 3 consecutive periods of 1 minute. | + +-------------------+-------------------+-----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +Procedure +--------- + +In the following example, an alarm rule is set for the **Connected Clients (connected_clients)** metric. + +#. Log in to the management console. + +#. Click |image1| in the upper left corner of the management console and select a region. + +#. Click **Service List**, and choose **Database** > **Distributed Cache Service** to launch the DCS console. + +#. In the same row as the DCS instance whose metrics you want to view, click **View Metric**. + + + .. figure:: /_static/images/en-us_image_0000001340709641.png + :alt: **Figure 1** Viewing instance metrics + + **Figure 1** Viewing instance metrics + +#. On the displayed page, locate the **Connected Clients** metric. Hover over the metric and click |image2| to create an alarm rule for the metric. + + The **Create Alarm Rule** page is displayed. + +#. Specify the alarm details. + + a. Specify the alarm policy and alarm severity. + + For example, the alarm policy shown in :ref:`Figure 2 ` indicates that an alarm will be triggered if the average number of clients connected to the instance exceeds the preset value for two consecutive periods and no actions are taken. + + .. _dcs-ug-190905001__fig18808134812416: + + .. figure:: /_static/images/en-us_image_0000001288469984.png + :alt: **Figure 2** Setting the alarm policy and alarm severity + + **Figure 2** Setting the alarm policy and alarm severity + + b. Set the alarm notification configurations. If you enable **Alarm Notification**, set the validity period, notification object, and trigger condition. + + c. Click **Next** to set the alarm name and description. + + d. Click **Finish**. + +.. |image1| image:: /_static/images/en-us_image_0000001287765296.png +.. |image2| image:: /_static/images/en-us_image_0000001340564653.png diff --git a/umn/source/monitoring/viewing_dcs_metrics.rst b/umn/source/monitoring/viewing_dcs_metrics.rst new file mode 100644 index 0000000..a3a2343 --- /dev/null +++ b/umn/source/monitoring/viewing_dcs_metrics.rst @@ -0,0 +1,29 @@ +:original_name: dcs-en-ug-180424004.html + +.. _dcs-en-ug-180424004: + +Viewing DCS Metrics +=================== + +The public cloud platform provides the Cloud Eye service, which monitors the running status of your DCS instances. + +Procedure +--------- + +#. Log in to the DCS console. + +#. Click |image1| in the upper left corner of the management console and select a region. + +#. Click **Service List**, and choose **Database** > **Distributed Cache Service** to launch the DCS console. + +#. In the navigation pane, choose **Cache Manager**. + +#. In the same row as the DCS instance whose metrics you want to view, click **View Metric**. + + On the displayed Cloud Eye console, you can view all the metrics of the instance. + + .. note:: + + You can also view the metrics on the **Performance Monitoring** page of the instance. + +.. |image1| image:: /_static/images/en-us_image_0000001287765320.png diff --git a/umn/source/operation_guide/backing_up_and_restoring_dcs_instances/configuring_a_backup_policy.rst b/umn/source/operation_guide/backing_up_and_restoring_dcs_instances/configuring_a_backup_policy.rst new file mode 100644 index 0000000..23b7bea --- /dev/null +++ b/umn/source/operation_guide/backing_up_and_restoring_dcs_instances/configuring_a_backup_policy.rst @@ -0,0 +1,58 @@ +:original_name: en-us_topic_0062866097.html + +.. _en-us_topic_0062866097: + +Configuring a Backup Policy +=========================== + +Scenario +-------- + +On the DCS console, you can configure an automatic backup policy. The system then backs up data in your instances according to the backup policy. + +If automatic backup is not required, disable the automatic backup function in the backup policy. + +.. note:: + + This function is supported only by master/standby and Proxy Cluster instances, but is not supported by single-node instances. + +Procedure +--------- + +#. Log in to the management console. +#. Click |image1| in the upper left corner of the management console and select a region. +#. Click **Service List**, and choose **Database** > **Distributed Cache Service** to launch the DCS console. +#. In the navigation pane, choose **Cache Manager**. +#. On the **Cache** **Manager** page, filter DCS instances by instance status and/or name to find the DCS instance for which you want to configure a backup policy. +#. Click the name of the chosen DCS instance to display more details about the DCS instance. +#. On the instance details page, click **Backups & Restorations**. +#. Slide |image2| to the right to enable automatic backup. Backup policies will be displayed. + + .. table:: **Table 1** Parameters in a backup policy + + +-----------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Parameter | Description | + +===================================+============================================================================================================================================================================================================================================+ + | Backup Schedule | Day of a week on which data in the chosen DCS instance is automatically backed up. | + | | | + | | You can select one or multiple days of a week. | + +-----------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Retention Period (days) | The number of days that automatically backed up data is retained. | + | | | + | | Backup data will be permanently deleted at the end of retention period and cannot be restored. Value range: 1-7. | + +-----------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Start Time | Time at which automatic backup starts. Value: the full hour between 00:00 to 23:00 | + | | | + | | The DCS checks backup policies once every hour. If the backup start time in a backup policy has arrived, data in the corresponding instance is backed up. | + | | | + | | .. note:: | + | | | + | | Instance backup takes 5 to 30 minutes. The data added or modified during the backup process will not be backed up. To reduce the impact of backup on services, it is recommended that data should be backed up during off-peak periods. | + | | | + | | Only instances in the **Running** state can be backed up. | + +-----------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +#. Click **OK**. + +.. |image1| image:: /_static/images/en-us_image_0000001287924936.png +.. |image2| image:: /_static/images/en-us_image_0000001288301616.png diff --git a/umn/source/operation_guide/backing_up_and_restoring_dcs_instances/index.rst b/umn/source/operation_guide/backing_up_and_restoring_dcs_instances/index.rst new file mode 100644 index 0000000..569a0cf --- /dev/null +++ b/umn/source/operation_guide/backing_up_and_restoring_dcs_instances/index.rst @@ -0,0 +1,20 @@ +:original_name: en-us_topic_0062866096.html + +.. _en-us_topic_0062866096: + +Backing Up and Restoring DCS Instances +====================================== + +- :ref:`Overview ` +- :ref:`Configuring a Backup Policy ` +- :ref:`Manually Backing Up a DCS Instance ` +- :ref:`Restoring a DCS Instance ` + +.. toctree:: + :maxdepth: 1 + :hidden: + + overview + configuring_a_backup_policy + manually_backing_up_a_dcs_instance + restoring_a_dcs_instance diff --git a/umn/source/operation_guide/backing_up_and_restoring_dcs_instances/manually_backing_up_a_dcs_instance.rst b/umn/source/operation_guide/backing_up_and_restoring_dcs_instances/manually_backing_up_a_dcs_instance.rst new file mode 100644 index 0000000..1431d67 --- /dev/null +++ b/umn/source/operation_guide/backing_up_and_restoring_dcs_instances/manually_backing_up_a_dcs_instance.rst @@ -0,0 +1,38 @@ +:original_name: en-us_topic_0062866098.html + +.. _en-us_topic_0062866098: + +Manually Backing Up a DCS Instance +================================== + +Scenario +-------- + +On the DCS console, you can manually back up data in instances. + +By default, manually backed up data is permanently retained. If backup data is no longer in use, you can delete it manually. + +Prerequisites +------------- + +At least one master/standby or Proxy Cluster DCS instance is in the **Running** state. + +Procedure +--------- + +#. Log in to the management console. +#. Click |image1| in the upper left corner of the management console and select a region. +#. Click **Service List**, and choose **Database** > **Distributed Cache Service** to launch the DCS console. +#. In the navigation pane, choose **Cache Manager**. +#. On the **Cache** **Manager** page, filter DCS instances by instance status and/or name to find the DCS instance you want to manually back up. +#. Click the name of the chosen DCS instance to display more details about the DCS instance. +#. On the instance details page, click **Backups & Restorations**. +#. On the **Backups & Restorations** page, click **Create Backup**. +#. In the **Create Backup** dialog box, click **OK** to start manual backup. + + .. note:: + + - Information in the **Description**\ text box cannot exceed 128 bytes. + - Instance backup takes 10 to 15 minutes. The data added or modified during the backup process will not be backed up. + +.. |image1| image:: /_static/images/en-us_image_0000001340704041.png diff --git a/umn/source/operation_guide/backing_up_and_restoring_dcs_instances/overview.rst b/umn/source/operation_guide/backing_up_and_restoring_dcs_instances/overview.rst new file mode 100644 index 0000000..563575f --- /dev/null +++ b/umn/source/operation_guide/backing_up_and_restoring_dcs_instances/overview.rst @@ -0,0 +1,97 @@ +:original_name: en-us_topic_0079835992.html + +.. _en-us_topic_0079835992: + +Overview +======== + +Need for DCS Instance Backup +---------------------------- + +There is a small chance that dirty data could exist in a DCS instance owing to service system exceptions or problems in loading data from persistence files. In addition, some systems demand not only high reliability but also data security, data restoration, and even permanent data storage. + +Currently, data in DCS instances can be backed up to OBS. If a DCS instance becomes faulty, data in the instance can be restored from backup so that service continuity is not affected. + +Backup Modes +------------ + +DCS instances support the following backup modes: + +- Scheduled backup + + You can create a scheduled backup policy on the DCS console. Then, data in the chosen DCS instances will be automatically backed up at the scheduled time. + + You can choose the days of the week on which scheduled backup will run. Backup data will be retained for a maximum of seven days. Backup data older than seven days will be automatically deleted. + + The primary purpose of scheduled backups is to create complete data replicas of DCS instances so that the instance can be quickly restored if necessary. + +- Manual backup + + Backup requests can also be issued manually. Then, data in the chosen DCS instances will be permanently backed up to OBS. Backup data can be deleted manually. + + Before performing high-risk operations, such as system maintenance or upgrade, DCS instance data needs to be backed up. + +Additional Information About Data Backup +---------------------------------------- + +- Instance type + + Currently, only master/standby and Proxy Cluster DCS instances can be backed up and restored. Single-node DCS instances do not support backup or restoration. + +- Working principle + + Instance data is persisted using the Redis Append Only Files (AOF) feature. + + Backup tasks are run on standby cache nodes. DCS instance data is backed up by compressing and storing the data persistence files from the standby cache node to OBS. + + DCS checks instance backup policies once an hour. If a backup policy is matched, DCS runs a backup task for the corresponding DCS instance. + +- Impact on DCS instances during backup + + DCS instances can continue to provide services during backup. + + In the event of full-data synchronization or heavy instance load, it takes a few minutes to complete data synchronization. If instance backup starts before data synchronization is complete, the backup data will be slightly behind the data in the master cache node. + + During instance backup, the standby cache node stops persisting the latest changes to disk files. If new data is written to the master cache node during backup, the backup file will not contain the new data. + +- Backup time + + It is advisable to back up instance data during off-peak periods. + +- Storage of backup files + + Backup files are stored to OBS. + + DCS provides the backup service free of charge, but OBS charges will be incurred for the amount and period that storage space is consumed. + +- Handling exceptions in scheduled backup + + If a scheduled backup task is triggered while the DCS instance is restarting or being scaled up, the scheduled backup task will be run in the next cycle. + + If backing up a DCS instance fails or the backup is postponed because another task is in progress, DCS will try to back up the instance in the next cycle. A maximum of three retries are allowed within a single day. + +- Retention period of backup data + + Scheduled backup files are retained for up to seven days. The retention period is user configurable. At the end of the retention period, most backup files of the DCS instance will be automatically deleted, but at least one backup file will be retained. + + Manual backup files are retained permanently and need to be manually deleted. + +Data Restoration +---------------- + +- Data restoration process + + #. A user initiates a data restoration request using the DCS console. + #. DCS obtains the backup file from OBS. + #. Read/write to the DCS instance is suspended. + #. The original data persistence file of the master cache node is replaced by the backup file. + #. The new data persistence file (that is, the backup file) is reloaded. + #. Data is restored, and the DCS instance starts to provide read/write service again. + +- Impact on service systems + + Data read/write is suspended during instance data restoration and resumed after data in the master cache node is restored. + +- Handling data restoration exceptions + + If a backup file is corrupted, DCS will try to fix the backup file while restoring instance data. If the backup file is successfully fixed, DCS proceeds to restore instance data. If the backup file cannot be fixed, the DCS instance (if the instance type is master/standby) or the cache node with an unrepairable backup file (if the instance type is Proxy Cluster) will be restored to the state in which it was before data restoration. diff --git a/umn/source/operation_guide/backing_up_and_restoring_dcs_instances/restoring_a_dcs_instance.rst b/umn/source/operation_guide/backing_up_and_restoring_dcs_instances/restoring_a_dcs_instance.rst new file mode 100644 index 0000000..ee55971 --- /dev/null +++ b/umn/source/operation_guide/backing_up_and_restoring_dcs_instances/restoring_a_dcs_instance.rst @@ -0,0 +1,39 @@ +:original_name: en-us_topic_0062866099.html + +.. _en-us_topic_0062866099: + +Restoring a DCS Instance +======================== + +Scenario +-------- + +On the DCS console, you can restore backup data to a chosen DCS instance. + +Prerequisites +------------- + +- At least one master/standby or Proxy Cluster DCS instance is in the **Running** state. +- A backup task has been run to back up data in the instance to be restored and the status of the backup task is **Successful**. + +Procedure +--------- + +#. Log in to the management console. +#. Click |image1| in the upper left corner of the management console and select a region. +#. Click **Service List**, and choose **Database** > **Distributed Cache Service** to launch the DCS console. +#. In the navigation pane, choose **Cache Manager**. +#. On the **Cache** **Manager** page, filter DCS instances by instance status and/or name to find the DCS instance you want to restore. +#. Click the name of the chosen DCS instance to display more details about the DCS instance. +#. On the instance details page, click **Backups & Restorations**. +#. Click **Restore** in the same row as the chosen backup task. +#. Click **Yes** to start instance restoration. + + .. note:: + + - Information in the **Description** text box cannot exceed 128 bytes. + - The **Restoration History** tab page displays the result of the instance restoration task. + - Instance restoration takes 5 to 30 minutes. + - While being restored, DCS instances do not accept data operation requests from clients because existing data is being overwritten by the backup data. + +.. |image1| image:: /_static/images/en-us_image_0000001340405149.png diff --git a/umn/source/operation_guide/changing_instance_passwords.rst b/umn/source/operation_guide/changing_instance_passwords.rst new file mode 100644 index 0000000..1bdc9c7 --- /dev/null +++ b/umn/source/operation_guide/changing_instance_passwords.rst @@ -0,0 +1,40 @@ +:original_name: en-us_topic_0054235820.html + +.. _en-us_topic_0054235820: + +Changing Instance Passwords +=========================== + +Scenario +-------- + +On the DCS console, you can change the password required for accessing your DCS instance. + +Prerequisites +------------- + +The DCS instance for which you want to change the password is in the **Running** state. + +Procedure +--------- + +#. Log in to the management console. +#. Click |image1| in the upper left corner of the management console and select a region. +#. Click **Service List**, and choose **Database** > **Distributed Cache Service** to launch the DCS console. +#. In the navigation pane, choose **Cache Manager**. +#. Choose **More** > **Change Password** in the same row as the chosen instance. +#. In the **Change Password** dialog box, enter the old password and new password. + + .. note:: + + After 5 consecutive incorrect password attempts, the account for accessing the chosen DCS instance will be locked for 5 minutes. Passwords cannot be changed during the lockout period. + + A DCS instance password cannot be left unspecified and must: + + - Consist of 8 to 32 characters. + - Be different from the old password. + - Contain at least three of the following character types: uppercase letters, lowercase letters, digits, and special characters (:literal:`\`~!@#$^&*()-_=+\\|{}:,<.>/?`). + +#. Click **OK** to confirm the password change. + +.. |image1| image:: /_static/images/en-us_image_0000001287605360.png diff --git a/umn/source/operation_guide/configuring_redis-specific_parameters.rst b/umn/source/operation_guide/configuring_redis-specific_parameters.rst new file mode 100644 index 0000000..1d8f6d8 --- /dev/null +++ b/umn/source/operation_guide/configuring_redis-specific_parameters.rst @@ -0,0 +1,161 @@ +:original_name: en-us_topic_0054235814.html + +.. _en-us_topic_0054235814: + +Configuring Redis-Specific Parameters +===================================== + +On the DCS console, you can configure Redis-specific parameters to keep DCS instances performing optimally. + +.. note:: + + The default values are already optimized for typical use cases. Reconfiguring parameters is recommended only when necessary. + +Prerequisites +------------- + +The DCS instance you want to configure is in the **Running** state, and the instance type is single-node or master/standby (Redis parameters of DCS instances in Proxy Cluster mode are not modifiable). + +Procedure +--------- + +#. Log in to the management console. + +#. Click |image1| in the upper left corner of the management console and select a region. + +#. Click **Service List**, and choose **Database** > **Distributed Cache Service** to launch the DCS console. + +#. In the navigation pane, choose **Cache Manager**. + +#. On the **Cache Manager** page, click the name of the DCS instance you want to configure. + + A page with details of the DCS instance is displayed. + +#. On the instance details page, click the **Parameters** tab. + +#. On the **Parameters** tab page, click **Modify**. + +#. Modify Redis-specific parameters based on your requirements. + + .. note:: + + The Redis parameters supported by single-node and master/standby instances are different. The following parameters are only supported by master/standby instances, but are not supported by single-node instances: + + - appendfsync + - appendonly + - repl-backlog-size + - repl-backlog-ttl + + .. table:: **Table 1** Redis-specific parameters + + +---------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------+ + | Parameter | Description | Value Range | Default Value | + +===========================+=========================================================================================================================================================================================================================================================================================+=====================================================================================================================================================================================================+=================+ + | appendfsync | Controls how often fsync() transfers cached data to the disk. Note that some OSs will perform a complete data transfer but some others only make a "best-effort" attempt. | - no | everysec | + | | | - always | | + | | There are three settings: | - everysec | | + | | | | | + | | **no**: fsync() is never called. The OS will flush data when it is ready. This mode offers the highest performance. | | | + | | | | | + | | **always**: fsync() is called after every write to the AOF. This mode is very slow, but also very safe. | | | + | | | | | + | | **everysec**: fsync() is called once per second. This mode provides a compromise between safety and performance. | | | + +---------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------+ + | repl-backlog-size | The replication backlog size (bytes). The backlog is a buffer that accumulates replica data when replicas are disconnected from the master. When a replica reconnects, a partial synchronization is performed to synchronize the data that was missed while replicas were disconnected. | 16,384-1,073,741,824 | 1,048,576 | + +---------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------+ + | repl-backlog-ttl | The amount of time, in seconds, before the backlog buffer is released, starting from the last a replica was disconnected. The value **0** indicates that the backlog is never released. | 0-604,800 | 3,600 | + +---------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------+ + | appendonly | Indicates whether to log each modification of the instance. By default, data is written to disks asynchronously in Redis. If this function is disabled, recently-generated data might be lost in the event of a power failure. Options: | - yes | yes | + | | | - no | | + | | **yes**: enabled | | | + | | | | | + | | **no**: disabled | | | + +---------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------+ + | maxmemory-policy | How DCS will select what to remove when maxmemory is reached. | volatile-lru | noeviction | + | | | | | + | | For more information about this parameter, see :ref:`What Is the Default Data Eviction Policy? `. | allkeys-lru | | + | | | | | + | | | volatile-random | | + | | | | | + | | | allkeys-random | | + | | | | | + | | | volatile-ttl | | + | | | | | + | | | noeviction | | + +---------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------+ + | hash-max-ziplist-entries | When the number of entries in hashes is less than the value of this parameter, hashes are encoded using a memory efficient data structure. | 1 to 10000 | 512 | + +---------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------+ + | hash-max-ziplist-value | When the biggest entry in hashes does not exceed the length threshold indicated by this parameter, hashes are encoded using a memory efficient data structure. | 1 to 10000 | 64 | + +---------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------+ + | list-max-ziplist-entries | When the number of entries in lists is less than the value of this parameter, lists are encoded using a memory efficient data structure. | 1 to 10000 | 512 | + +---------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------+ + | list-max-ziplist-value | When the biggest entry in lists does not exceed the length threshold indicated by this parameter, lists are encoded using a memory efficient data structure. | 1 to 10000 | 64 | + +---------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------+ + | set-max-intset-entries | When a set is composed entirely of strings that happen to be integers in radix 10 in the range of 64 bit signed integers, sets are encoded using a memory efficient data structure. | 1 to 10000 | 512 | + +---------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------+ + | zset-max-ziplist-entries | When the number of entries in sorted sets is less than the value of this parameter, sorted sets are encoded using a memory efficient data structure. | 1 to 10000 | 128 | + +---------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------+ + | zset-max-ziplist-value | When the biggest entry in sorted sets does not exceed the length threshold indicated by this parameter, sorted sets are encoded using a memory efficient data structure. | 1 to 10000 | 64 | + +---------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------+ + | latency-monitor-threshold | Only events that run in more time than the configured latency-monitor-threshold will be logged as latency spikes. | 0 to 86,400,000 ms | 0 | + | | | | | + | | - If the latency-monitor-threshold is set to 0, latency monitoring is disabled. | | | + | | - If the latency-monitor-threshold is set to a value greater than 0, all events blocking the server for a time equal to or greater than the configured latency-monitor-threshold will be logged. | | | + | | | | | + | | By running the LATENCY command, you can perform operations related to latency monitoring, such as enabling latency monitoring, reporting the latest latency events logged, and obtaining statistical data. | | | + | | | | | + | | For more information about the latency-monitor-threshold, visit https://redis.io/docs/reference/optimization/latency-monitor/. | | | + +---------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------+ + | reserved-memory-percent | Percentage of the maximum available memory reserved for background processes, such as data persistence and replication. | 0-80 | 0 | + +---------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------+ + | timeout | Connection between the client and server (DCS instance) will be closed if the client is idle for the timeout period (measured in seconds). A timeout period of 0 seconds indicates that the timeout function is disabled. | 0 to 7200 seconds | 0 | + +---------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------+ + | notify-keyspace-events | Keyspace event notification. If this parameter is configured, the Redis Sub/Pub feature will allow clients to receive an event when a Redis data set is modified. | If the parameter value is an empty character string, keyspace event notification is disabled. | "" | + | | | | | + | | | If the parameter value is a string of multiple characters, keyspace event notification is enabled and each character identifies a class of keyspace events for which Redis will send notifications. | | + | | | | | + | | | .. note:: | | + | | | | | + | | | - The parameter value must contain either K or E. | | + | | | - A is an alias for "g$lshzxe"and cannot be used together with any of the characters "g$lshzxe". | | + | | | - For example, the value Kl means that Redis will notify Pub/Sub clients about keyspace events and list commands. The value AKE means Redis will notify Pub/Sub clients about all events. | | + | | | | | + | | | K: Keyspace events, published with the \__keyspace@_\_ prefix | | + | | | | | + | | | E: Keyevent events, published with \__keyevent@_\_ prefix | | + | | | | | + | | | g: Generic commands (non-type specific) such as DEL, EXPIRE, and RENAME | | + | | | | | + | | | $: String commands | | + | | | | | + | | | l: List commands | | + | | | | | + | | | s: Set commands | | + | | | | | + | | | h: Hash commands | | + | | | | | + | | | z: Sorted set commands | | + | | | | | + | | | x: Expired events (events generated every time a key expires) | | + | | | | | + | | | e: Evicted events (events generated when a key is evicted for maxmemory) | | + | | | | | + | | | A: Alias for "g$lshzxe", so that the "AKE" string means all the events. | | + | | | | | + | | | Note that the parameter value must contain either K or E. | | + +---------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------+ + | slowlog-log-slower-than | The maximum amount of time allowed, in microseconds, for command execution. If this threshold is exceeded, Redis Slow Log will record the command. | 0-1,000,000 | 10,000 | + +---------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------+ + | slowlog-max-len | The maximum allowed length of the Redis Slow Log logs. Slow Log consumes memory, but you can reclaim this memory by running the SLOWLOG RESET command. | 0-1,000 | 128 | + +---------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------+ + + .. note:: + + - For more information about Redis-specific parameters, visit https://redis.io/topics/memory-optimization. + - The latency-monitor-threshold parameter is usually used for fault location. After locating faults based on the latency information collected, change the value of **latency-monitor-threshold** to **0** to avoid unnecessary latency. + +#. After you have finished setting parameters, click **Save**. + +#. Click **Yes** to confirm. + +.. |image1| image:: /_static/images/en-us_image_0000001340285305.png diff --git a/umn/source/operation_guide/deleting_dcs_instances.rst b/umn/source/operation_guide/deleting_dcs_instances.rst new file mode 100644 index 0000000..2c7c396 --- /dev/null +++ b/umn/source/operation_guide/deleting_dcs_instances.rst @@ -0,0 +1,70 @@ +:original_name: en-us_topic_0054235819.html + +.. _en-us_topic_0054235819: + +Deleting DCS Instances +====================== + +Scenario +-------- + +On the DCS console, you can delete one or multiple DCS instances at a time. You can also delete all instance creation tasks that have failed to run. + +.. important:: + + After a DCS instance is deleted, data from the instance will also be deleted without backup. + +Prerequisites +------------- + +- The DCS instances you want to delete have been created. +- The DCS instances you want to delete are in the **Running**, **Faulty**, or **Stopped** state. + +Procedure +--------- + +**Deleting DCS Instances** + +#. Log in to the management console. + +#. Click |image1| in the upper left corner of the management console and select a region. + +#. In the navigation pane, choose **Cache Manager**. + +#. On the **Cache Manager** page, select one or more DCS instances you want to delete. + + DCS instances in the **Creating**, **Starting**, **Stopping**, or **Restarting** state cannot be deleted. + +#. Choose **More** > **Delete** above the instance list. + +#. Click **Yes** to confirm that you want to delete the instances. + + It takes 1 to 30 minutes to delete DCS instances. + + .. note:: + + To delete a single instance, choose **Operation** > **More** > **Delete** in the same row as the instance. + +**Deleting Instance Creation Tasks That Have Failed to Run** + +#. Log in to the management console. + +#. Click |image2| in the upper left corner of the management console and select a region. + +#. Click **Service List**, and choose **Database** > **Distributed Cache Service** to launch the DCS console. + +#. In the navigation pane, choose **Cache Manager**. + + If there are DCS instances that have failed to be created, **Instance Creation Failures** is displayed above the instance list. + +#. Click the icon or the number of failed tasks next to **Instance Creation Failures**. + + The **Instance Creation Failures** dialog box is displayed. + +#. Choose failed instance creation tasks to delete. + + - To delete a single failed task, click **Delete** in the same row as the task. + - To delete all failed tasks, click **Delete All** above the task list. + +.. |image1| image:: /_static/images/en-us_image_0000001340405153.png +.. |image2| image:: /_static/images/en-us_image_0000001340285301.png diff --git a/umn/source/operation_guide/index.rst b/umn/source/operation_guide/index.rst new file mode 100644 index 0000000..d3ec41d --- /dev/null +++ b/umn/source/operation_guide/index.rst @@ -0,0 +1,32 @@ +:original_name: en-us_topic_0054235813.html + +.. _en-us_topic_0054235813: + +Operation Guide +=============== + +- :ref:`Configuring Redis-Specific Parameters ` +- :ref:`Starting DCS Instances ` +- :ref:`Restarting DCS Instances ` +- :ref:`Deleting DCS Instances ` +- :ref:`Modifying DCS Instance Specifications ` +- :ref:`Changing Instance Passwords ` +- :ref:`Modifying an Instance's Maintenance Time Window ` +- :ref:`Modifying an Instance's Security Group ` +- :ref:`Backing Up and Restoring DCS Instances ` +- :ref:`Managing Background Tasks ` + +.. toctree:: + :maxdepth: 1 + :hidden: + + configuring_redis-specific_parameters + starting_dcs_instances + restarting_dcs_instances + deleting_dcs_instances + modifying_dcs_instance_specifications + changing_instance_passwords + modifying_an_instances_maintenance_time_window + modifying_an_instances_security_group + backing_up_and_restoring_dcs_instances/index + managing_background_tasks diff --git a/umn/source/operation_guide/managing_background_tasks.rst b/umn/source/operation_guide/managing_background_tasks.rst new file mode 100644 index 0000000..ffc9b41 --- /dev/null +++ b/umn/source/operation_guide/managing_background_tasks.rst @@ -0,0 +1,45 @@ +:original_name: dcs-en-ug-180312009.html + +.. _dcs-en-ug-180312009: + +Managing Background Tasks +========================= + +Scenario +-------- + +After you initiate certain instance operations such as scaling up instances, and changing a password, a background task will start for each operation. On the DCS console, you can view the background task status and clear task information by deleting task records. + +Prerequisites +------------- + +At least one DCS instance has been created. + +Procedure +--------- + +#. Log in to the management console. + +#. Click |image1| in the upper left corner of the management console and select a region. + +#. Click **Service List**, and choose **Database** > **Distributed Cache Service** to launch the DCS console. + +#. In the navigation pane, choose **Cache Manager**. + +#. Click the name of the DCS instance whose background task you want to view. + +#. Click the **Background Tasks** tab. + + A list of background tasks is displayed. + +#. Filter background tasks, refresh task status, or delete task records. + + - To filter background tasks by date, click |image2| on top of the background task list, specify **Start Date** and **End Date**, and click **OK**. + - To delete the record of a background task, choose **Operation** > **Delete** in the same row as the task + + .. note:: + + Only tasks whose status is **Successful** or **Failed** can have their records deleted. + +.. |image1| image:: /_static/images/en-us_image_0000001287445440.png +.. |image2| image:: /_static/images/en-us_image_0000001288144356.png diff --git a/umn/source/operation_guide/modifying_an_instances_maintenance_time_window.rst b/umn/source/operation_guide/modifying_an_instances_maintenance_time_window.rst new file mode 100644 index 0000000..e47c431 --- /dev/null +++ b/umn/source/operation_guide/modifying_an_instances_maintenance_time_window.rst @@ -0,0 +1,42 @@ +:original_name: en-us_topic_0090713825.html + +.. _en-us_topic_0090713825: + +Modifying an Instance's Maintenance Time Window +=============================================== + +Scenario +-------- + +On the DCS console, after creating a DCS instance, you can modify the maintenance time window of the DCS instance on the instance's \ **Basic Information**\ tab. + +Prerequisite +------------ + +At least one DCS instance has been created. + +Procedure +--------- + +#. Log in to the management console. + +#. Click |image1| in the upper left corner of the management console and select a region. + +#. Click **Service List**, and choose **Database** > **Distributed Cache Service** to launch the DCS console. + +#. In the navigation pane, choose **Cache Manager**. + + A list of DCS instances is displayed on the \ **Cache Manager**\ page. + +#. Click the name of the DCS instance for which you want to modify the maintenance time window. + +#. In the **Instance Details** area, click the |image2| icon next to the **Maintenance** parameter. + +#. Select a new maintenance time window from the drop-down list. Click |image3| to save the modification or |image4| to discard the modification. + + The modification will take effect immediately, that is, the new maintenance time window will appear on the **Basic Information** tab page immediately. + +.. |image1| image:: /_static/images/en-us_image_0000001340285285.png +.. |image2| image:: /_static/images/en-us_image_0000001287445460.jpg +.. |image3| image:: /_static/images/en-us_image_0000001287765328.jpg +.. |image4| image:: /_static/images/en-us_image_0000001340205085.jpg diff --git a/umn/source/operation_guide/modifying_an_instances_security_group.rst b/umn/source/operation_guide/modifying_an_instances_security_group.rst new file mode 100644 index 0000000..8f24a84 --- /dev/null +++ b/umn/source/operation_guide/modifying_an_instances_security_group.rst @@ -0,0 +1,42 @@ +:original_name: en-us_topic_0090713826.html + +.. _en-us_topic_0090713826: + +Modifying an Instance's Security Group +====================================== + +Scenario +-------- + +On the DCS console, after creating a DCS instance, you can modify the security group of the DCS instance on the instance's \ **Summary**\ page. + +Prerequisites +------------- + +At least one DCS instance has been created. + +Procedure +--------- + +#. Log in to the management console. + +#. Click |image1| in the upper left corner of the management console and select a region. + +#. Click **Service List**, and choose **Database** > **Distributed Cache Service** to launch the DCS console. + +#. In the navigation pane, choose **Cache Manager**. + + A list of DCS instances is displayed on the \ **Cache Manager**\ page. + +#. Click the name of the DCS instance for which you want to modify the security group. + +#. On the **Basic Information** page, click the |image2| icon next to the **Security Group** parameter. + +#. Select a new security group from the drop-down list. Click |image3| to save the modification or |image4| to discard the modification. + + The modification will take effect immediately, that is, the new security group will appear on the **Basic Information** tab page immediately. + +.. |image1| image:: /_static/images/en-us_image_0000001287445448.png +.. |image2| image:: /_static/images/en-us_image_0000001340285313.png +.. |image3| image:: /_static/images/en-us_image_0000001287765328.jpg +.. |image4| image:: /_static/images/en-us_image_0000001340205085.jpg diff --git a/umn/source/operation_guide/modifying_dcs_instance_specifications.rst b/umn/source/operation_guide/modifying_dcs_instance_specifications.rst new file mode 100644 index 0000000..ddb7bcd --- /dev/null +++ b/umn/source/operation_guide/modifying_dcs_instance_specifications.rst @@ -0,0 +1,55 @@ +:original_name: en-us_topic_0063519673.html + +.. _en-us_topic_0063519673: + +Modifying DCS Instance Specifications +===================================== + +Scenario +-------- + +On the DCS console, you can modify a DCS Redis instance to the desired specification. + +.. important:: + + - After you change the specifications of a Proxy Cluster DCS instance, you cannot restore the files backed up before the modification. You are advised to back up your data as soon as possible after changing the specifications. + - It takes 5 to 30 minutes to change the specifications of single-node or master/standby DCS instances. Changing the specifications of a Proxy Cluster DCS instance takes a longer time because data must be redistributed in the cluster. During the specification modification, services are interrupted for seconds. You are advised to modify the specifications during off-peak hours. + - Normally during the specification modification, single-node, master/standby, and Proxy Cluster DCS instances can be read from and written into. However, writing data into single-node or master/standby instances may be temporarily unsupported until the specification modification is completed. + +Prerequisites +------------- + +The DCS instance you want to change the specification for is in the **Running** state. + +Procedure +--------- + +#. Log in to the management console. + +#. Click |image1| in the upper left corner of the management console and select a region. + +#. Click **Service List**, and choose **Database** > **Distributed Cache Service** to launch the DCS console. + +#. In the navigation pane, choose **Cache Manager**. + +#. Choose **More** > **Modify Specifications** in the same row as the DCS instance. + +#. On the **Modify Specifications** page, select the desired specification. + + The maximum storage space is 64 GB for single-node and master/standby instances, and 512 GB for Proxy Cluster instances. + +#. Click **Next**. + +#. Click **Submit**. + + It takes 5 to 30 minutes to scale up a DCS instance. After scale-up is successful, the DCS instance enters the **Running** state. + + The **Background Tasks** page then appears. On this page, you can view the scale-up status. For more information, see :ref:`Managing Background Tasks `. + + .. note:: + + - If the specification modification of a single-node DCS instance fails, the instance is temporarily unavailable for use. The specification remains unchanged. Some management operations (such as parameter configuration and specification modification) are temporarily not supported. After the specification modification is completed in the backend, the instance changes to the new specification and becomes available for use again. + - If the specification modification of a master/standby or Proxy Cluster DCS instance fails, the instance is still available for use with its original specifications. Some management operations (such as parameter configuration, backup, restoration, and specification modification) are temporarily not supported. Remember not to read or write more data than allowed by the original specifications; otherwise, data loss may occur. + - After the specification modification is successful, the new specification of the instance takes effect. + +.. |image1| image:: /_static/images/en-us_image_0000001340205081.png diff --git a/umn/source/operation_guide/restarting_dcs_instances.rst b/umn/source/operation_guide/restarting_dcs_instances.rst new file mode 100644 index 0000000..f53b62c --- /dev/null +++ b/umn/source/operation_guide/restarting_dcs_instances.rst @@ -0,0 +1,48 @@ +:original_name: en-us_topic_0054235818.html + +.. _en-us_topic_0054235818: + +Restarting DCS Instances +======================== + +Scenario +-------- + +On the DCS console, you can restart one or multiple DCS instances at a time. + +.. warning:: + + - While a DCS instance is restarting, it cannot be read from or written to. + - If the DCS instance is a single-node instance, data will also be deleted from it when it is restarted. + - An attempt to restart a DCS instance while it is being backed up may result in a failure. + +Prerequisites +------------- + +The DCS instances you want to restart are in the **Running** or **Faulty** state. + +Procedure +--------- + +#. Log in to the management console. + +#. Click |image1| in the upper left corner of the management console and select a region. + +#. Click **Service List**, and choose **Database** > **Distributed Cache Service** to launch the DCS console. + +#. In the navigation pane, choose **Cache Manager**. + +#. Choose instances to restart. + + - To restart a single instance, choose **Restart** in the same row as the instance. + - To restart multiple instances, select the instances to restart and click **Restart** above the instance list. + +#. In the displayed dialog box, click **Yes**. + + It takes 1 to 30 minutes to restart DCS instances. After DCS instances are restarted, their status changes to **Running**. + + .. note:: + + By default, only the instance process will restart. However, selecting **Force restart** will restart the VM on which the chosen DCS instance runs. + +.. |image1| image:: /_static/images/en-us_image_0000001340405157.png diff --git a/umn/source/operation_guide/starting_dcs_instances.rst b/umn/source/operation_guide/starting_dcs_instances.rst new file mode 100644 index 0000000..13a5f32 --- /dev/null +++ b/umn/source/operation_guide/starting_dcs_instances.rst @@ -0,0 +1,36 @@ +:original_name: en-us_topic_0054235817.html + +.. _en-us_topic_0054235817: + +Starting DCS Instances +====================== + +Scenario +-------- + +On the DCS console, you can start one or multiple DCS instances at a time. + +.. note:: + + This function is not supported by recent instances. You can only start old instances that have been stopped. Once started, these instances can only be restarted and can no longer be stopped or started. + +Procedure +--------- + +#. Log in to the management console. + +#. Click |image1| in the upper left corner of the management console and select a region and a project. + +#. Click **Service List**, and choose **Database** > **Distributed Cache Service** to launch the DCS console. + +#. In the navigation pane, choose **Cache Manager**. + +#. On the **Cache Manager** page, select one or more DCS instances you want to start. + +#. Click **Start** in the same row as the instance. + +#. In the **Start** dialog box, click **OK** to confirm that you want to start the instances. + + It takes 1 to 30 minutes to start DCS instances. After DCS instances are started, their status changes from **Stopped** to **Running**. + +.. |image1| image:: /_static/images/en-us_image_0000001287445456.png