Last modified by Erik Bakker on 2026/01/30 10:56

From version 146.1
edited by Erik Bakker
on 2026/01/30 10:56
Change comment: There is no comment for this version
To version 2.1
edited by eMagiz
on 2022/06/24 14:38
Change comment: There is no comment for this version

Summary

Details

Page properties
Title
... ... @@ -1,1 +1,1 @@
1 -Install Docker for Windows
1 +On-premises deployment new runtime architecture
Author
... ... @@ -1,1 +1,1 @@
1 -XWiki.ebakker
1 +XWiki.eMagiz
Content
... ... @@ -1,178 +1,256 @@
1 1  {{container}}{{container layoutStyle="columns"}}(((
2 -In eMagiz's current runtime architecture, Docker technology is utilized to deploy runtimes efficiently. eMagiz provides specific runtime images that can be deployed within dockerized environments. This section outlines the steps needed to prepare a Windows server for the installation of the eMagiz Deploy Agent, which is responsible for downloading these images from the eMagiz infrastructure.
2 +In this microlearning, we will focus on how can stay in control of your integration landscape with the help of determining the needed memory footprint for your integration landscape.
3 +As your integration landscape changes over time the need for more (or less) memory is evident. Therefore it is crucial to know how you can determine the memory correctly.
3 3  
4 4  Should you have any questions, please contact [[academy@emagiz.com>>mailto:academy@emagiz.com]].
5 5  
7 +* Last update: February 22th 2021
8 +* Required reading time: 13 minutes
9 +
6 6  == 1. Prerequisites ==
7 7  
8 8  * Advanced knowledge of the eMagiz platform
9 -* Good understanding of eMagiz runtimes in general
10 10  
11 11  == 2. Key concepts ==
12 -In the current runtime architecture of eMagiz, Docker technology is used to deploy runtimes. eMagiz creates specific runtime images that contain the eMagiz runtime, and can be deployed in dockerized environments.
13 13  
14 -In the below section the Windows variant is described in terms of how to prepare the server to allow the [[eMagiz Deploy Agent>>doc:Main.eMagiz Academy.Microlearnings.Intermediate Level.eMagiz Runtime Management.intermediate-runtime-management-deploy-agent.WebHome||target="blank"]] to be installed. That agent allows to download images from the eMagiz infrastructure.
16 +This microlearning centers around determining the memory that is needed to run your complete integration landscape.
17 +With memory, we mean: A collection of memory types (heap, native and direct) that are needed to properly run a runtime (Java Virtual Machine)
18 +With integration landscape we mean: A overview of all data integrations that are used to exchange data between systems
15 15  
16 -== 3. On-premises deployments ==
20 +* eMagiz will help to determine the needed memory via the Design Architecture page.
21 +* eMagiz works with pre-determined sizes that are represented via an S, M, L, XL structure. Every size has a certain amount of memory available
22 +* When you exceed such a threshold you should upgrade (or downgrade) your memory in consultation with your partner manager
23 +* Overhead for OS and support functionality (auto-healing, alerting, monitoring) needs to be taken into account
24 +* The calculations and logic described below are applicable for the Messaging, API Gateway and Event Streaming pattern
17 17  
18 -===3.1 General requirements===
19 19  
20 -{{info}}It is advised to use Docker version 29.1.3 as this is the version being used in the latest eMagiz cloud template. We advise aligning the on-premise Docker version and updating it according to the release notes of the [[Cloud templates>>doc:Main.Release Information.Cloud Templates.WebHome||target="blank"]].
21 -{{/info}}
22 22  
23 -{{info}}
24 -* Standard configuration to ensure that communication between your server and eMagiz to ensure communication.
25 - ** registry.emagiz.com:443
26 - ** controlplane.emagiz.com:443
27 - ** controlplane-agent.emagiz.com:443
28 - ** controltower.emagiz.com:443
29 - ** controltower.kpn-dsh.com:443
30 - ** controlbus.emagiz.com:443
31 - ** Preferably the entry should be *.emagiz.com
32 - ** Preferably the entry should be *.kpn-dsh.com{{/info}}
28 +== 3. Determining Needed Memory ==
33 33  
34 -{{warning}}
35 -* When using **IP Whitelisting**, the following configuration is needed to communicate to your JMS.
36 - ** 35.158.46.28:443
37 - ** 3.74.190.88:443
38 - ** 35.158.46.28:8443
39 - ** 3.74.190.88:8443
40 - ** 35.158.46.28:8444
41 - ** 3.74.190.88:8444
42 - ** 3.74.209.20:443
43 - ** 3.76.127.155:443
44 - ** 3.74.209.20:8443
45 - ** 3.76.127.155:8443
46 - ** 3.74.209.20:8444
47 - ** 3.76.127.155:8444
48 - ** 18.199.123.240
49 - ** 18.184.211.189
50 - ** 3.123.136.31{{/warning}}
30 +One of the key aspects of running a stable eMagiz solution is proper management of the needed memory to run all your integrations within your integration landscape.
31 +To determine what is needed you get help from eMagiz in Design Architecture.
32 +In the Design Architecture eMagiz tells you based on our calculations what the recommended sizing of a **machine** should be.
33 +If this deviates from what is configured you should take a closer look at whether you indeed need more memory.
51 51  
35 +=== 3.1 The calculation of eMagiz ===
52 52  
37 +In this section, we will delve into that recommendation to explain to you how you should interpret this recommendation so you can make the correct determination of how much memory is needed.
53 53  
54 -===3.2 Installation Windows===
55 -When Windows is selected as the operating system, you need Windows Server 2022. Older Windows servers are **not** supported.
39 +To calculate the memory eMagiz has determined that the flows that are running on the runtimes make up most of the memory.
40 +To calculate how much memory a single flow uses on average eMagiz uses several assumptions. These assumptions are the foundation of the recommended memory size by eMagiz.
56 56  
57 -==== 3.2.1 Docker Installation ====
58 -To install Docker on your machine, execute the following commands in PowerShell with administrative rights:
42 +* Limited use of 'non-standard' flows. So, are the number of components within a flow comparable to the 'standard' setup (i.e. an autogenerated onramp).
43 +* Average message size of less than 100KbSize van de berichten
44 +* Standard number of consumers
45 +* Use of Java extensions such as Groovy Scripts
46 +* Limited use of complex transformations
47 +* Limited use of Xpath and SpEL expression related to large messages
59 59  
60 -{{code language="cmd"}}
61 -Invoke-WebRequest -UseBasicParsing "https://raw.githubusercontent.com/emagiz/windows-support/main/Install-update-docker/install-update-docker.ps1" -o install-update-docker-ce.ps1
62 -.\install-update-docker-ce.ps1 -DockerVersion DESIRED_VERSION
63 -{{/code}}
49 +As long as you do not deviate from the above assumptions at all or not too much the recommended sizing of eMagiz should work for you.
64 64  
65 -==== 3.2.2 Customization ====
51 +Based on the above assumption we made thresholds for the number of flows.
52 +If you pass a threshold (i.e. 50 flows) the recommended size of that runtime and therefore the machine the runtime is running on will increase.
66 66  
67 -After installing Docker, you can stick with the standard configuration or adjust specific settings. Settings that can be of particular interest include the one that defines the IP address range your Docker installation will use to run containers, and the one that defines where to store data (i.e., containers and images). To check the full list of compatible configuration options for Windows, you can check: [[Configure Docker in Windows>>https://learn.microsoft.com/en-us/virtualization/windowscontainers/manage-docker/configure-docker-daemon||target="blank"]].
54 +All thresholds that are used by eMagiz can be found in the help text of eMagiz when checking the size status.
68 68  
69 -{{warning}}Be aware that the customization will only take effect once you have restarted the machine.{{/warning}}
56 +On top of the calculation of needed memory based on the number of flows eMagiz also accounts for the following 'overhead'
70 70  
71 -===== 3.2.2.1 IP address range =====
72 -
73 -Below is the code needed to configure a different IP address range.
58 +* OS
59 +* Support functionality (auto-healing, alerting on infrastructure, monitoring on infrastructure)
60 +* Buffer
74 74  
75 -{{code language="cmd"}}
76 -cd C:\ProgramData\Docker\config\daemon.json
77 -#Add the following lines
78 -{"fixed-cidr": "<ip-address>"}
79 -{{/code}}
62 +For JMS processes the default is 500MB heap and 152MB non-heap.
63 +In most cases, there is no reason to deviate from this number until you reach a lot of throughput on a lot of flows.
80 80  
81 -===== 3.2.2.2 Data location =====
82 -
83 -Below is an example of switching from the default C directory ({{code language="cmd"}}c:\programdata\docker{{/code}}) to the D directory to store Docker data. Based on your internal configuration, you can choose the best suitable variant if needed. To do so, you can add the following attribute to the Docker daemon file:
65 +=== 3.2 Check size status ===
84 84  
85 -{{code language="cmd"}}
86 -cd C:\ProgramData\Docker\config\daemon.json
87 -#Add the following lines
88 -{
89 - "data-root": "d:\\docker"
90 -}
91 -{{/code}}
67 +Now that we know how eMagiz calculates the needed memory based on the number of flows and certain categories of overhead we can turn our attention to the eMagiz tooling itself.
68 +In eMagiz, in Design Architecture you can check the recommended size status given by eMagiz.
92 92  
93 -{{warning}}Note that when you want to create multiple customizations to your configuration, the result in the daemon.json file should be a **valid** JSON structure{{/warning}}
70 +[[image:Main.Images.Microlearning.WebHome@expert-solution-architecture-determining-needed-memory--check-size-status.png]]
94 94  
95 -==== 3.2.3 Check installation ====
72 +Selecting this option will lead you to the following pop-up
96 96  
97 -After executing the commands above, the server will restart if required. After the restart, execute the following command
74 +[[image:Main.Images.Microlearning.WebHome@expert-solution-architecture-determining-needed-memory--check-size-status-pop-up.png]]
98 98  
99 -{{code language="cmd"}}
100 -docker ps
101 -{{/code}}
76 +In this pop-up you see the calculation split up into three categories:
102 102  
103 -If the command returns "command not found," please run the following command again.
78 +* Required heap memory
79 +* Required non-heap (native) memory
80 +* Required overhead
104 104  
105 -{{code language="cmd"}}
106 -.\install-update-docker-ce.ps1 -DockerVersion DESIRED_VERSION
107 -{{/code}}
82 +==== 3.2.1 Required overhead ====
108 108  
109 -==== 3.2.3 Verify Docker functionality ====
84 +The first segment we are going to take a look at is the required overhead. Under this category fall the following characteristics:
110 110  
111 -Execute the following command
86 +* OS
87 +* Support functionality (auto-healing, alerting on infrastructure, monitoring on infrastructure)
88 +* Buffer
112 112  
113 -{{code language="cmd"}}
114 -docker ps
115 -{{/code}}
90 +Each of these characteristics has a pre-determined setting that we recommend for the proper working of eMagiz.
91 +We reserve 712MB for the OS, 50MB for the Support functionality, and a Buffer of 100MB **per** active runtime on a machine.
92 +If we tally this up for our example we end up with 962MB of overhead. Just as you can see in the pop-up:
116 116  
117 -The result of this call should show the following:
94 +[[image:Main.Images.Microlearning.WebHome@expert-solution-architecture-determining-needed-memory--check-size-status-pop-up-required-overhead.png]]
118 118  
119 -[[image:Main.Images.Microlearning.WebHome@expert-solution-architecture-onpremises-server-windows-installguide--correct-result.png]]
96 +==== 3.2.2 Required heap memory ====
120 120  
121 -==== 3.2.4 Install eMagiz Deploy Agent ====
98 +As explained before the amount of memory needed is determined by the number of flows that are designed within your integration landscape.
99 +In eMagiz the memory allocation is divided into two parts:
122 122  
123 -Install the eMagiz Deploy agent as described in this [[microlearning>>doc:Main.eMagiz Academy.Microlearnings.Intermediate Level.eMagiz Runtime Management.intermediate-runtime-management-deploy-agent.WebHome||target="blank"]]
101 +* Heap memory
102 +* Native (non-heap) memory
124 124  
125 -=== 3.3 Update Docker ===
126 -When you are advised to update your Docker version, you can verify whether you are on the correct Docker version by executing the following command in PowerShell with administrative rights:
104 +The heap memory is used to process messages and can be cleaned up via the garbage collection process.
105 +The native memory is used to start up your flows and keep them running. This part of the memory is allocated and not released in the same way as with heap memory.
127 127  
128 -{{code language="cmd"}}
129 -docker version
130 -{{/code}}
107 +To make it clear for you how much of which type of memory is needed we have split up the calculation into two portions.
108 +One for the required heap memory and the other for the required non-heap (native) memory.
131 131  
132 -When this returns a version **lower** than the advised version shown under the "General requirements" section, you can update Docker on your machine. To do so, execute the following command in PowerShell with administrative rights:
110 +Both are derived from the number of flows that are designed in your integration landscape. In our example, we have one JMS and one process container, and a total of 29 flows.
111 +This leads to the following calculation on heap memory:
133 133  
134 -{{code language="cmd"}}
135 -.\install-update-docker-ce.ps1 -DockerVersion DESIRED_VERSION
136 -{{/code}}
113 +500 (JMS) + 580 (Process Container) = 1080MB. This is once again the same as what is calculated under check size status
137 137  
138 -{{warning}}It may happen that, due to the update, your containers are no longer starting up. To resolve this, please restart the containers, which can be done via a deployment plan or the deploy architecture.{{/warning}}
115 +[[image:Main.Images.Microlearning.WebHome@expert-solution-architecture-determining-needed-memory--check-size-status-pop-up-required-heap-memory.png]]
139 139  
140 -===3.4 Uninstall Docker===
141 -To uninstall Docker from your machine, execute the following commands in PowerShell with administrative rights:
117 +==== 3.2.3 Required non-heap memory ====
142 142  
143 -{{code language="cmd"}}
144 -Invoke-WebRequest -UseBasicParsing "https://raw.githubusercontent.com/emagiz/windows-support/main/Uninstall-docker/uninstall-docker.ps1" -o uninstall-docker-ce.ps1
145 -{{/code}}
119 +The third part of the equation is the amount of non-heap memory that is required to run your eMagiz solution. Once again the starting point is the number of flows. In this case 29 flows.
120 +This leads to the following calculation on non-heap memory:
146 146  
147 -Example usage:
122 +152 (JMS) + 792 (Process Container = 944MB. This is the same as what is calculated under check size status
148 148  
149 -{{code language="cmd"}}
150 -.\uninstall-docker-ce.ps1
151 -{{/code}}
124 +[[image:Main.Images.Microlearning.WebHome@expert-solution-architecture-determining-needed-memory--check-size-status-pop-up-required-non-heap-memory.png]]
152 152  
153 -== 4. Key takeaways ==
126 +==== 3.2.4 Total recommended memory ====
154 154  
155 -* eMagiz uses runtime images to deploy the eMagiz runtime on Dockerized environments. The runtime image holds all the information and components required to run the runtime
156 -* eMagiz has a specific agent that manages the download of that image to the on-premises server
157 -* The firewall of the on-premises environment should allow outgoing traffic without any restrictions. If that is not desirable, eMagiz can provide the addresses and ports needed to set up the appropriate firewall rules.
128 +When you sum up these three values you arrive at the recommended size based on the current state of your Design.
129 +So when your Design is not representative of the truth the calculation will neither be a correct representation of the truth.
158 158  
159 -== 5. Suggested Additional Readings ==
131 +In this case the total recommended memory will be:
160 160  
161 -* [[Fundamentals (Navigation)>>doc:Main.eMagiz Academy.Fundamentals.WebHome||target="blank"]]
162 -** [[eMagiz Runtime Generation 3 (Explanation)>>doc:Main.eMagiz Academy.Fundamentals.fundamental-runtime-generation3||target="blank"]]
163 -* [[Release Information (Menu)>>doc:Main.Release Information.WebHome||target="blank"]]
164 -** [[Environment Templates (Navigation)>>doc:Main.Release Information.Cloud Templates.WebHome||target="blank"]]
165 -* [[Intermediate (Menu)>>doc:Main.eMagiz Academy.Microlearnings.Intermediate Level.WebHome||target="blank"]]
166 -** [[eMagiz Runtime Management (Navigation)>>doc:Main.eMagiz Academy.Microlearnings.Intermediate Level.eMagiz Runtime Management.WebHome||target="blank"]]
167 -*** [[Interpret on-premise logging (Explanation)>>doc:Main.eMagiz Academy.Microlearnings.Intermediate Level.eMagiz Runtime Management.intermediate-emagiz-runtime-management-interpret-on-premise-logging.WebHome||target="blank"]]
168 -*** [[eMagiz Deploy agent (Explanation)>>doc:Main.eMagiz Academy.Microlearnings.Intermediate Level.eMagiz Runtime Management.intermediate-runtime-management-deploy-agent.WebHome||target="blank"]]
169 -* [[Advanced (Menu)>>doc:Main.eMagiz Academy.Microlearnings.Advanced Level.WebHome||target="blank"]]
170 -** [[Lifecycle Management (Navigation)>>doc:Main.eMagiz Academy.Microlearnings.Advanced Level.Lifecycle Management.WebHome||target="blank"]]
171 -*** [[Impact of Runtime Image Upgrades (Explanation)>>doc:Main.eMagiz Academy.Microlearnings.Advanced Level.Lifecycle Management.advanced-lifecycle-management-impact-of-runtime-image-upgrades.WebHome||target="blank"]]
172 -* [[Expert (Menu)>>doc:Main.eMagiz Academy.Microlearnings.Expert Level.WebHome||target="blank"]]
173 -** [[Solution Architecture (Navigation)>>doc:Main.eMagiz Academy.Microlearnings.Expert Level.Solution Architecture.WebHome||target="blank"]]
174 -*** [[Install Docker for Linux (Explanation)>>doc:Main.eMagiz Academy.Microlearnings.Expert Level.Solution Architecture.expert-solution-architecture-onpremises-server-linux-installguide.WebHome||target="blank"]]
175 -* [[Install Docker (Search Result)>>url:https://docs.emagiz.com/bin/view/Main/Search?sort=score&sortOrder=desc&highlight=true&facet=true&r=1&f_space_facet=0%2FMain.&f_type=DOCUMENT&f_locale=en&f_locale=&f_locale=en&text=install+docker||target="blank"]]
176 -* Docker command line cheatsheet: [[image:Main.Images.Microlearning.WebHome@docker-cheatsheet.png]]
133 +962 + 1080 + 944 = 2986MB
177 177  
135 +[[image:Main.Images.Microlearning.WebHome@expert-solution-architecture-determining-needed-memory--check-size-status-pop-up-recommended-sizing.png]]
136 +
137 +=== 3.3 Comparison ===
138 +
139 +Now that we know the recommended sizing of eMagiz we can compare this to the sizing that is allocated based on the contractual agreements between eMagiz and you.
140 +This is the last segment of the check Size Status information in Design. In this segment you see:
141 +
142 +* The recommended size
143 +* The allocated size
144 +* The difference between recommended and allocated
145 +
146 +[[image:Main.Images.Microlearning.WebHome@expert-solution-architecture-determining-needed-memory--check-size-status-pop-up-comparison.png]]
147 +
148 +So in this example, we still have 1110MB left on our machine. If the number at the bottom would indicate that you need more size than is allocated at the moment you should take action.
149 +
150 +=== 3.4 Taking Action ===
151 +
152 +Based on this information it is time to take action. Taking action is foremost validating the calculation as given by eMagiz.
153 +As said before we assume certain things and based on whether part of those assumptions, all of them or none of them are met the result could differ.
154 +
155 +In this section, we will discuss some combinations and the appropriate action based on these combinations.
156 +
157 +==== 3.4.1 Valid Assumptions + Correct nr. of flows ====
158 +
159 +The first combination is the easiest of them all. This combination states that all assumptions that eMagiz has done hold truth.
160 +If so, trust the calculations of eMagiz and ensure that there is enough allocated room based on the recommended size by eMagiz.
161 +
162 +==== 3.4.2 Valid Assumptions + Incorrect nr. of flows ====
163 +
164 +We see a growing number of projects that have a myriad of process containers with the consequence that the assumption that all process containers run the same flows does not hold anymore.
165 +In these cases, you should adjust the calculations for the heap and non-heap memory allocation yourself based on the actual number of flows.
166 +
167 +If the result of that calculation still says that there is not enough room please allocate more room based on that altered calculation.
168 +To help you perform that calculation yourself we have devised two tables that you can use to come up with the correct values for both heap and non-heap.
169 +
170 +The table shown below is relevant for process containers on the CORE machines.
171 +
172 +| Nr. Flows | Heap | Non-heap |
173 +| 0-10 | 500 | 472 |
174 +| 11-20 | 500 | 552 |
175 +| 21-50 | 580 | 792 |
176 +| 51-75 | 820 | 992 |
177 +| 76-100 | 820 | 1192 |
178 +| 101-150 | 1220 | 1592 |
179 +
180 +The table shown below is relevant for connectors on the CONNECTOR machines.
181 +
182 +| Nr. Flows | Heap | Non-heap |
183 +| 0-5 | 500 | 152 |
184 +| 6-10 | 500 | 192 |
185 +| 11-15 | 500 | 232 |
186 +| 16-20 | 500 | 272 |
187 +| 21-25 | 580 | 312 |
188 +| 26-30 | 580 | 352 |
189 +| 31-35 | 580 | 392 |
190 +| 36-40 | 580 | 432 |
191 +| 41-45 | 580 | 472 |
192 +| 46-50 | 580 | 512 |
193 +| 51-55 | 820 | 552 |
194 +| 56-60 | 820 | 592 |
195 +| 61-65 | 820 | 632 |
196 +| 66-70 | 820 | 672 |
197 +| 71-75 | 820 | 712 |
198 +| 76-100 | 820 | 912 |
199 +
200 +==== 3.4.3 Incorrect Assumptions ====
201 +
202 +When you deviate from the assumptions made by eMagiz to determine the sizing
203 +you should start from scratch and determine how much you roughly deviate from the standard assumptions.
204 +
205 +Based on that estimate you should increase the heap and non-heap memory accordingly.
206 +This won't have any effect on the calculations for the overhead so they will stand.
207 +For example, when you deviate from the assumptions in a little way you could think of selecting the memory settings that are determined for one level higher.
208 +
209 +If you deviate a lot from the assumptions you should increase more drastically and test your solutions on the performance based on the expected throughput.
210 +
211 +=== 3.5 Configure the size ===
212 +
213 +Now that we know what the size should be, either by following the eMagiz calculation
214 +or by calculating the correct numbers ourselves with the help of components of the eMagiz calculation we can configure the size.
215 +
216 +To configure the size you enter Start Editing Mode in Design Architecture
217 +
218 +[[image:Main.Images.Microlearning.WebHome@expert-solution-architecture-determining-needed-memory--design-architecture-start-editing-mode.png]]
219 +
220 +While you are in Start Editing Mode you can alter the configured size of your eMagiz cloud machines to ensure that enough memory is available for the processes running on that machine.
221 +You can easily do so by switching around between S, M, L, XL, and XXL on machine level with the help of the arrows.
222 +After you have altered the size you can verify whether the change was enough by comparing
223 +it to the recommended size which is shown beside the configured size, by opening the Check Size Status pop-up for conformation or by comparing your calculation to the newly allocated memory.
224 +
225 +In case there is room left you have scaled accordingly. If there still is extra room required you should move another level up until you reach the desired level.
226 +
227 +
228 +
229 +== 4. Assignment ==
230 +
231 +Do your calculation based on what we learned in this microlearning and compare the solution to what eMagiz suggests under Check Size Status
232 +This assignment can be completed with the help of the (Academy) project that you have created/used in the previous assignment.
233 +
234 +== 5. Key takeaways ==
235 +
236 +* eMagiz will help to determine the needed memory via the Design Architecture page.
237 +* eMagiz works with pre-determined sizes that are represented via an S, M, L, XL structure. Every size has a certain amount of memory available
238 +* When you exceed such a threshold you should upgrade (or downgrade) your memory in consultation with your partner manager
239 +* Overhead for OS and support functionality (auto-healing, alerting, monitoring) needs to be taken into account
240 +* Calculating memory can be challenging. Always confer with others before taking action
241 +* You can compare your calculations with the calculations of eMagiz
242 +* The calculations and logic described below are applicable for the Messaging, API Gateway and Event Streaming pattern
243 +
244 +
245 +
246 +== 6. Suggested Additional Readings ==
247 +
248 +If you are interested in this topic and want more information on it please read the help text provided by eMagiz.
249 +
250 +== 7. Silent demonstration video ==
251 +
252 +This video demonstrates how you could have handled the assignment and gives you some context on what you have just learned.
253 +
254 +{{video attachment="expert-solution-architecture-determining-needed-memory.mp4" reference="Main.Videos.Microlearning.WebHome"/}}
255 +
178 178  )))((({{toc/}}))){{/container}}{{/container}}