{"id":6351,"date":"2016-10-12T16:33:13","date_gmt":"2016-10-12T08:33:13","guid":{"rendered":"http:\/\/rmohan.com\/?p=6351"},"modified":"2016-10-12T18:30:21","modified_gmt":"2016-10-12T10:30:21","slug":"synchronization-simplified","status":"publish","type":"post","link":"https:\/\/mohan.sg\/?p=6351","title":{"rendered":"Synchronization Simplified"},"content":{"rendered":"<h3 class=\"post-title entry-title\">Synchronization Simplified<\/h3>\n<div class=\"post-header\"><\/div>\n<div id=\"post-body-3093319338354859336\" class=\"post-body entry-content\">\n<div dir=\"ltr\">\n<p><strong><em><u>Synchronization Simplified<\/u><\/em><\/strong><\/p>\n<p>Synchronization is a process of updating the nodes with master configuration repository changes.The network deployment scenario of WebSphere application server contains multiple nodes managed by a Dmgr and Dmgr holds the master repository of configurations. Any updates or changes through Dmr will be saved in the master configuration and the nodes will be aware of these changes only after the synchronization.<\/p>\n<p>The synchronization is always from Dmgr to Nodes and it never happens vise versa. If you made any changes from the node side it will be cleared during next synchronization process.<\/p>\n<p><strong><em><u>A Simple example<\/u><\/em><\/strong><\/p>\n<p>Consider below scenario.<\/p>\n<p>OS &#8212;&#8211;\u00a0 Linux<br \/>\nHostA &#8212;&#8211; Dmgr<br \/>\nHostB &#8212;&#8212;Node1 &#8212; AppSrv01<\/p>\n<p>Suggest to stop the Nodeagent process in Node1<br \/>\nAutosync should be disabled (figure1)<\/p>\n<div><\/div>\n<div>\n<table class=\"tr-caption-container\" cellspacing=\"0\" cellpadding=\"0\" align=\"center\">\n<tbody>\n<tr>\n<td>\n<div align=\"left\"><a href=\"http:\/\/rmohan.com\/wp-content\/uploads\/2016\/10\/sync_disable.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-6354\" src=\"http:\/\/rmohan.com\/wp-content\/uploads\/2016\/10\/sync_disable.jpg\" alt=\"sync_disable\" width=\"640\" height=\"368\" srcset=\"https:\/\/mohan.sg\/wp-content\/uploads\/2016\/10\/sync_disable.jpg 640w, https:\/\/mohan.sg\/wp-content\/uploads\/2016\/10\/sync_disable-300x173.jpg 300w, https:\/\/mohan.sg\/wp-content\/uploads\/2016\/10\/sync_disable-150x86.jpg 150w, https:\/\/mohan.sg\/wp-content\/uploads\/2016\/10\/sync_disable-400x230.jpg 400w\" sizes=\"(max-width: 640px) 100vw, 640px\" \/><\/a><\/div>\n<\/td>\n<\/tr>\n<tr>\n<td class=\"tr-caption\">Figure 1<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<div>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 As part of the tuning process you wants to\u00a0set the JVM heap size of\u00a0Node1\/AppSrv01 to Min 256\/ Max 512. Let us look at the Dmgr\u00a0<em>(Figure 2)<\/em>\u00a0and Node1 <em>(Figure 3)<\/em> configurations before setting the values.<\/div>\n<div><\/div>\n<div>\n<p>Both these configuration files does not have an entry for jvm heap size (Linux OS) as there is no value set for it currently<\/p>\n<table class=\"tr-caption-container\" cellspacing=\"0\" cellpadding=\"0\" align=\"center\">\n<tbody>\n<tr>\n<td><a href=\"http:\/\/rmohan.com\/wp-content\/uploads\/2016\/10\/jvm_master_config_after_jvmset.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-6355\" src=\"http:\/\/rmohan.com\/wp-content\/uploads\/2016\/10\/jvm_master_config_after_jvmset.jpg\" alt=\"jvm_master_config_after_jvmset\" width=\"640\" height=\"177\" srcset=\"https:\/\/mohan.sg\/wp-content\/uploads\/2016\/10\/jvm_master_config_after_jvmset.jpg 640w, https:\/\/mohan.sg\/wp-content\/uploads\/2016\/10\/jvm_master_config_after_jvmset-300x83.jpg 300w, https:\/\/mohan.sg\/wp-content\/uploads\/2016\/10\/jvm_master_config_after_jvmset-150x41.jpg 150w, https:\/\/mohan.sg\/wp-content\/uploads\/2016\/10\/jvm_master_config_after_jvmset-400x111.jpg 400w\" sizes=\"(max-width: 640px) 100vw, 640px\" \/><\/a><\/td>\n<\/tr>\n<tr>\n<td class=\"tr-caption\">Figure 2<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<div>\n<table class=\"tr-caption-container\" cellspacing=\"0\" cellpadding=\"0\" align=\"center\">\n<tbody>\n<tr>\n<td>\n<div align=\"left\"><a href=\"http:\/\/rmohan.com\/wp-content\/uploads\/2016\/10\/jvm_master_config_before_jvmset.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-6356\" src=\"http:\/\/rmohan.com\/wp-content\/uploads\/2016\/10\/jvm_master_config_before_jvmset.jpg\" alt=\"jvm_master_config_before_jvmset\" width=\"640\" height=\"180\" srcset=\"https:\/\/mohan.sg\/wp-content\/uploads\/2016\/10\/jvm_master_config_before_jvmset.jpg 640w, https:\/\/mohan.sg\/wp-content\/uploads\/2016\/10\/jvm_master_config_before_jvmset-300x84.jpg 300w, https:\/\/mohan.sg\/wp-content\/uploads\/2016\/10\/jvm_master_config_before_jvmset-150x42.jpg 150w, https:\/\/mohan.sg\/wp-content\/uploads\/2016\/10\/jvm_master_config_before_jvmset-400x113.jpg 400w\" sizes=\"(max-width: 640px) 100vw, 640px\" \/><\/a><\/div>\n<\/td>\n<\/tr>\n<tr>\n<td class=\"tr-caption\">Figure 3<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<div><\/div>\n<p>Now let us set the heap size min value to 256 and max to 512 as below <em>(Figure 4)<\/em><\/p>\n<table class=\"tr-caption-container\" cellspacing=\"0\" cellpadding=\"0\" align=\"center\">\n<tbody>\n<tr>\n<td><a href=\"http:\/\/rmohan.com\/wp-content\/uploads\/2016\/10\/jvm_value_set.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-6357\" src=\"http:\/\/rmohan.com\/wp-content\/uploads\/2016\/10\/jvm_value_set.jpg\" alt=\"jvm_value_set\" width=\"173\" height=\"117\" srcset=\"https:\/\/mohan.sg\/wp-content\/uploads\/2016\/10\/jvm_value_set.jpg 173w, https:\/\/mohan.sg\/wp-content\/uploads\/2016\/10\/jvm_value_set-150x101.jpg 150w\" sizes=\"(max-width: 173px) 100vw, 173px\" \/><\/a><\/td>\n<\/tr>\n<tr>\n<td class=\"tr-caption\">Figure 4<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Make sure that you are <strong>not<\/strong> selecting\u00a0 &#8220;synchronize changes with nodes&#8221; option <em>(Figure 5) <\/em>and then save the changes to master repository<\/p>\n<table class=\"tr-caption-container\" cellspacing=\"0\" cellpadding=\"0\" align=\"center\">\n<tbody>\n<tr>\n<td><a href=\"http:\/\/rmohan.com\/wp-content\/uploads\/2016\/10\/sync_disable-1.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-6358\" src=\"http:\/\/rmohan.com\/wp-content\/uploads\/2016\/10\/sync_disable-1.jpg\" alt=\"sync_disable\" width=\"640\" height=\"368\" srcset=\"https:\/\/mohan.sg\/wp-content\/uploads\/2016\/10\/sync_disable-1.jpg 640w, https:\/\/mohan.sg\/wp-content\/uploads\/2016\/10\/sync_disable-1-300x173.jpg 300w, https:\/\/mohan.sg\/wp-content\/uploads\/2016\/10\/sync_disable-1-150x86.jpg 150w, https:\/\/mohan.sg\/wp-content\/uploads\/2016\/10\/sync_disable-1-400x230.jpg 400w\" sizes=\"(max-width: 640px) 100vw, 640px\" \/><\/a><\/td>\n<\/tr>\n<tr>\n<td class=\"tr-caption\">Figure 5<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Now let us examine the master configuration repository (Dmgr) for the chnages we made. There you can see the newly created heap size entries <em>(Figure 6)<\/em><\/p>\n<table class=\"tr-caption-container\" cellspacing=\"0\" cellpadding=\"0\" align=\"center\">\n<tbody>\n<tr>\n<td><a href=\"http:\/\/rmohan.com\/wp-content\/uploads\/2016\/10\/jvm_master_config_after_jvmset-1.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-6359\" src=\"http:\/\/rmohan.com\/wp-content\/uploads\/2016\/10\/jvm_master_config_after_jvmset-1.jpg\" alt=\"jvm_master_config_after_jvmset\" width=\"640\" height=\"177\" srcset=\"https:\/\/mohan.sg\/wp-content\/uploads\/2016\/10\/jvm_master_config_after_jvmset-1.jpg 640w, https:\/\/mohan.sg\/wp-content\/uploads\/2016\/10\/jvm_master_config_after_jvmset-1-300x83.jpg 300w, https:\/\/mohan.sg\/wp-content\/uploads\/2016\/10\/jvm_master_config_after_jvmset-1-150x41.jpg 150w, https:\/\/mohan.sg\/wp-content\/uploads\/2016\/10\/jvm_master_config_after_jvmset-1-400x111.jpg 400w\" sizes=\"(max-width: 640px) 100vw, 640px\" \/><\/a><\/td>\n<\/tr>\n<tr>\n<td class=\"tr-caption\">Figure 6<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>As we disabled synchronization the jvm configuration file of Node1 will not be having that entry <em>(Figure 7)<\/em><\/p>\n<table class=\"tr-caption-container\" cellspacing=\"0\" cellpadding=\"0\" align=\"center\">\n<tbody>\n<tr>\n<td><a href=\"http:\/\/rmohan.com\/wp-content\/uploads\/2016\/10\/jvm_node_after_jvmset_before_sysnc.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-6360\" src=\"http:\/\/rmohan.com\/wp-content\/uploads\/2016\/10\/jvm_node_after_jvmset_before_sysnc.jpg\" alt=\"jvm_node_after_jvmset_before_sysnc\" width=\"640\" height=\"178\" srcset=\"https:\/\/mohan.sg\/wp-content\/uploads\/2016\/10\/jvm_node_after_jvmset_before_sysnc.jpg 640w, https:\/\/mohan.sg\/wp-content\/uploads\/2016\/10\/jvm_node_after_jvmset_before_sysnc-300x83.jpg 300w, https:\/\/mohan.sg\/wp-content\/uploads\/2016\/10\/jvm_node_after_jvmset_before_sysnc-150x42.jpg 150w, https:\/\/mohan.sg\/wp-content\/uploads\/2016\/10\/jvm_node_after_jvmset_before_sysnc-400x111.jpg 400w\" sizes=\"(max-width: 640px) 100vw, 640px\" \/><\/a><\/td>\n<\/tr>\n<tr>\n<td class=\"tr-caption\">Figure 7<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Now synchronize the master configuration repository changes with nodes by either a syncNode.sh\/bat or by starting the nodes and then synching it from console, This updates the\u00a0JVM configuration file of Node1 with the latest updates of master configuration <em>(Figure 8).<\/em><\/p>\n<table class=\"tr-caption-container\" cellspacing=\"0\" cellpadding=\"0\" align=\"center\">\n<tbody>\n<tr>\n<td><a href=\"http:\/\/rmohan.com\/wp-content\/uploads\/2016\/10\/jvm_node_after_jvmset_after_sysnc.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-6361\" src=\"http:\/\/rmohan.com\/wp-content\/uploads\/2016\/10\/jvm_node_after_jvmset_after_sysnc.jpg\" alt=\"jvm_node_after_jvmset_after_sysnc\" width=\"640\" height=\"188\" srcset=\"https:\/\/mohan.sg\/wp-content\/uploads\/2016\/10\/jvm_node_after_jvmset_after_sysnc.jpg 640w, https:\/\/mohan.sg\/wp-content\/uploads\/2016\/10\/jvm_node_after_jvmset_after_sysnc-300x88.jpg 300w, https:\/\/mohan.sg\/wp-content\/uploads\/2016\/10\/jvm_node_after_jvmset_after_sysnc-150x44.jpg 150w, https:\/\/mohan.sg\/wp-content\/uploads\/2016\/10\/jvm_node_after_jvmset_after_sysnc-400x118.jpg 400w\" sizes=\"(max-width: 640px) 100vw, 640px\" \/><\/a><\/td>\n<\/tr>\n<tr>\n<td class=\"tr-caption\">Figure 8<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><strong><u>Another simple and practical test for better understanding of synchronization<\/u><\/strong><\/p>\n<p><strong><em>Test #1<br \/>\n<\/em><\/strong>Go under the config directory of dmgr (master repository) and create a file<br \/>\nPerform a full synchronization<\/p>\n<p>Navigate to the config directory of node, It will be having the file which you created in master configuration.<\/p>\n<p>The reason for this is during the full sync process it found a file in the master repository and which is not there in the nodes so full sync process transfer this file to nodes<\/p>\n<p><strong><em>Test #2<br \/>\n<\/em><\/strong>Go under the node config directory, create a file.<br \/>\nPerform a full synchrinization from dmgr<br \/>\nNavigate to the config directory of the node and check for the file which you created, the file will not be there.<\/p>\n<p>The reason for this is, During the full\u00a0synchronization process it found a file in the node repository (which you created) and which is not there in the master repository so full sync process removes the file from node to make the configuration in sync with master repository.<br \/>\n<strong><u>Types of Synchronization<\/u><\/strong><\/p>\n<p>There are two types of Synchronization<\/p>\n<p>1.) Partial Synchronization : Here only the configuraion file(s) which has changed at the Dmgr level will be Synchronized with nodes.<br \/>\n2.) Full Synchronization: This will Synchronize the entire master repository with the nodes.<\/p>\n<p><strong><u>Possible ways of Synchronization<\/u><\/strong><\/p>\n<p>1. syncNode.sh \/syncNode.bat command from the nodes.<br \/>\n2. from the admin console or wsadmin<br \/>\n3. When node agent starts<br \/>\n4. During federationn process.(addNode.sh)<br \/>\n5. Auto\/scheduled sync.<\/p>\n<p><strong><u>syncNode.sh \/syncNode.bat command from the nodes.<\/u><\/strong><\/p>\n<p>Usage: syncNode dmgr_host [dmgr_port] [-conntype ] [-stopservers]<br \/>\n[-restart] [-quiet] [-nowait] [-logfile ] [-replacelog]<br \/>\n[-trace] [-username ] [-password ]<br \/>\n[-localusername ] [-localpassword ]<br \/>\n[-profileName ] [-help]<\/p>\n<p>Normally use it as: syncNode.sh -username -password<\/p>\n<p><strong>Note:-<\/strong> The node agent should be down to execute syncNode and this is always a full synchronization.<\/p>\n<p><strong><u>From the admin console or wsadmin<\/u><\/strong><\/p>\n<p>This can be either a partial synchronization or full synchronization, It depends on the option selected.<\/p>\n<p><strong><u>When node agent starts<\/u><\/strong><\/p>\n<p>If this option is enabled node agent will synchronize with master repository during the startup process. The very first synchronization after startup will be a Full Synchronization and the consicutive synchronization will be Partial Synchronization.<\/p>\n<p><strong><u>During federationn process<\/u><\/strong><\/p>\n<p>This is always a full synchronization<\/p>\n<p><strong><u>Auto\/scheduled sync<\/u><\/strong><\/p>\n<div>This is normally a partial synchronization but the very first synchronization after the node agent start will be a full synchronization.<\/div>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Synchronization Simplified <\/p>\n<p>Synchronization Simplified<\/p>\n<p>Synchronization is a process of updating the nodes with master configuration repository changes.The network deployment scenario of WebSphere application server contains multiple nodes managed by a Dmgr and Dmgr holds the master repository of configurations. Any updates or changes through Dmr will be saved in the master configuration and the nodes [&#8230;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[25],"tags":[],"_links":{"self":[{"href":"https:\/\/mohan.sg\/index.php?rest_route=\/wp\/v2\/posts\/6351"}],"collection":[{"href":"https:\/\/mohan.sg\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mohan.sg\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mohan.sg\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mohan.sg\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=6351"}],"version-history":[{"count":3,"href":"https:\/\/mohan.sg\/index.php?rest_route=\/wp\/v2\/posts\/6351\/revisions"}],"predecessor-version":[{"id":6362,"href":"https:\/\/mohan.sg\/index.php?rest_route=\/wp\/v2\/posts\/6351\/revisions\/6362"}],"wp:attachment":[{"href":"https:\/\/mohan.sg\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=6351"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mohan.sg\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=6351"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mohan.sg\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=6351"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}