Last modified by Erik Bakker on 2025/10/19 21:14

From version 60.1
edited by eMagiz
on 2023/02/07 12:14
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 -On-premise Install Guide
1 +On-premises deployment new runtime architecture
Content
... ... @@ -1,210 +1,256 @@
1 1  {{container}}{{container layoutStyle="columns"}}(((
2 -In this microlearning, we will focus on how the installation requirements for on-premises deployments of eMagiz runtimes that are part of the new runtime architecture. The new runtime architecture uses a containerized approach to deploy runtimes.
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 new 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 -
14 -In the below section the specific operating systems and versions are discussed in a sense that the prerequisite installations are described. Once the right installation is done, refer to section 3.7 for the installation of the eMagiz agent that manages the interaction with the eMagiz platform. That agent will download the created docker images that will be deployed in the Docker environment.
15 -
16 -== 3. On-premises deployments ==
17 17  
18 -===3.1 General requirements===
19 -
20 -These are the general requirements to allow the installation of the eMagiz Docker agent:
21 -* Ensure access to the following URLs is enabled
22 - ** registry.emagiz.com:8443
23 - ** controlplane.emagiz.com:8000
24 - ** Preferably the entry should be *.emagiz.com
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
25 25  
26 -
27 -===3.2 Installation requirements Linux===
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
28 28  
29 -* Whenever Linux is selected as operating system, the latest version of Ubuntu will work. Other Linux distributions will also work such as Debian or Red Hat.
30 -* Install latest version of the Docker engine - see for instance this link below. For other Linux distributions similar install guides are available on this link.
31 31  
32 -{{code}}https://docs.docker.com/engine/install/ubuntu/{{/code}}
33 33  
28 +== 3. Determining Needed Memory ==
34 34  
35 -* Install the eMagiz Deploy agent
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.
36 36  
37 -===3.3 Installation requirements Windows Server 2022 (Docker Desktop)===
35 +=== 3.1 The calculation of eMagiz ===
38 38  
39 -{{info}}Please note that this section also applies to Windows Server 2019 version >1806{{/info}}
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.
40 40  
41 -These are the requirements to allow the installation of the eMagiz Docker agent:
42 -* Install latest version of Docker Desktop from
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.
43 43  
44 -{{code}}https://www.docker.com/products/docker-desktop/{{/code}}
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
45 45  
46 -* Validate if WSL 2.0 is properly installed
47 -* Install the eMagiz Deploy agent
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.
48 48  
49 -===3.3 Installation requirements Windows Server 2022 (without Docker Desktop) ===
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.
50 50  
51 -{{info}}Please note that this section also applies to Windows Server 2019 version >1806{{/info}}
54 +All thresholds that are used by eMagiz can be found in the help text of eMagiz when checking the size status.
52 52  
53 -The steps below will install a linux subsystem under Windows. In that Linux system, Docker and Java will be installed. Please note that the Windows server needs to be able to run Virtualized (either via BIOS setting or via Nested Virtualization).
56 +On top of the calculation of needed memory based on the number of flows eMagiz also accounts for the following 'overhead'
54 54  
55 -**Step 1: Install linux distribution**
58 +* OS
59 +* Support functionality (auto-healing, alerting on infrastructure, monitoring on infrastructure)
60 +* Buffer
56 56  
57 -{{code language="cmd"}}
58 - wsl --install -d Ubuntu
59 - sudo apt-get update
60 - sudo apt install --no-install-recommends apt-transport-https ca-certificates curl gnupg2
61 - . /etc/os-release
62 -{{/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.
63 63  
65 +=== 3.2 Check size status ===
64 64  
65 -**Step 2: Install Docker **
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.
66 66  
67 -{{code language="cmd"}}
68 - curl -fsSL https://download.docker.com/linux/${ID}/gpg | sudo tee /etc/apt/trusted.gpg.d/docker.asc
69 - echo "deb [arch=amd64] https://download.docker.com/linux/${ID} ${VERSION_CODENAME} stable" | sudo tee /etc/apt/sources.list.d/docker.list
70 - sudo apt update
71 - sudo apt install docker-ce docker-ce-cli containerd.io
72 -{{/code}}
70 +[[image:Main.Images.Microlearning.WebHome@expert-solution-architecture-determining-needed-memory--check-size-status.png]]
73 73  
74 -{{info}}
75 - Requires ~335 Mb space to install
76 -{{/info}}
72 +Selecting this option will lead you to the following pop-up
77 77  
78 -**Step 3: Install Java **
74 +[[image:Main.Images.Microlearning.WebHome@expert-solution-architecture-determining-needed-memory--check-size-status-pop-up.png]]
79 79  
80 -{{code language="cmd"}}
81 - wget -O - https://packages.adoptium.net/artifactory/api/gpg/key/public | sudo apt-key add -
82 - echo "deb https://packages.adoptium.net/artifactory/deb $(awk -F= '/^VERSION_CODENAME/{print$2}' /etc/os-release) main" | sudo tee /etc/apt/sources.list.d/adoptium.list
83 - sudo apt update # update if you haven't already
84 - sudo apt install temurin-8-jdk
85 -{{/code}}
76 +In this pop-up you see the calculation split up into three categories:
86 86  
87 -{{info}}
88 - Requires ~335 Mb space to install
89 -{{/info}}
78 +* Required heap memory
79 +* Required non-heap (native) memory
80 +* Required overhead
90 90  
91 -**Step 4: Ensure Docker is autostarted with WSL **
82 +==== 3.2.1 Required overhead ====
92 92  
93 -{{code language="cmd"}}
94 -nano .bashrc
84 +The first segment we are going to take a look at is the required overhead. Under this category fall the following characteristics:
95 95  
96 - #Add following lines to bashrc
97 - DOCKER_DISTRO="Ubuntu"
98 - DOCKER_LOG_DIR=$HOME/docker_logs
99 - mkdir -pm o=,ug=rwx "$DOCKER_LOG_DIR"
100 - /mnt/c/Windows/System32/wsl.exe -d $DOCKER_DISTRO sh -c "nohup sudo -b dockerd < /dev/null > $DOCKER_LOG_DIR/dockerd.log 2>&1"
101 -{{/code}}
86 +* OS
87 +* Support functionality (auto-healing, alerting on infrastructure, monitoring on infrastructure)
88 +* Buffer
102 102  
103 -**Step 5: Add user to Docker group **
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:
104 104  
105 -{{code language="cmd"}}
106 -sudo visudo
94 +[[image:Main.Images.Microlearning.WebHome@expert-solution-architecture-determining-needed-memory--check-size-status-pop-up-required-overhead.png]]
107 107  
108 - #Add following lines
96 +==== 3.2.2 Required heap memory ====
109 109  
110 - # Don't ask for password
111 - %docker ALL=(ALL) NOPASSWD: /usr/bin/dockerd
112 -{{/code}}
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:
113 113  
114 -**Step 6: Update wsl config file **
115 -In this step we need to add or update the WSL config file that manages the resources of the Linux subsystem. Important resources to manage are the assigned memory and number of processors. For memory we recommend to review the mempory settings for the runtime that need to run on this server and add 762 MB to the total value of the heap and non-heap of these runtimes. For processor we recommend to set the value to 2 - depending on the amount of processors available on that machine
101 +* Heap memory
102 +* Native (non-heap) memory
116 116  
117 -First, locate the config file or add it to the location %USERPROFILE%. The name should be .wslconfig (no extension)
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.
118 118  
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.
119 119  
120 -{{code language="cmd"}}
121 - #Add following lines
122 -
123 - # Settings apply across all Linux distros running on WSL 2
124 - [wsl2]
125 - # Limits VM memory to use no more than 4 GB, this can be set as whole numbers using GB or MB
126 - memory=16GB
127 - # Sets the VM to use two virtual processors
128 - processors=2
129 -{{/code}}
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:
130 130  
131 -
132 -**Step 7: Auto start the linux subsystem when server restarts **
133 -
113 +500 (JMS) + 580 (Process Container) = 1080MB. This is once again the same as what is calculated under check size status
134 134  
135 -===3.5 Installation requirements Windows Server 2019 version 1806===
115 +[[image:Main.Images.Microlearning.WebHome@expert-solution-architecture-determining-needed-memory--check-size-status-pop-up-required-heap-memory.png]]
136 136  
137 -{{warning}}Please note that this section also applies to Windows Server 2019 version >1806{{/warning}}
117 +==== 3.2.3 Required non-heap memory ====
138 138  
139 -These are the requirements to allow the installation of the eMagiz Docker agent:
140 -* Enable Hyper-V in Windows Server
141 - ** Go to Server Manager, Manage (top right), enable roles and features, select the desired roles and server selections. In the Features section, enable Hyper-V.
142 - ** Restart windows
143 -* Cross check is WSL 2.0 is installed
144 - ** Use this command to get WSL 2.0: Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
145 -* Install Docker Desktop on the Windows Server
146 - ** Please refer to this link: https://www.docker.com/products/docker-desktop/
147 - ** Restart windows
148 -* Update Docker Desktop configuration
149 - ** Go to settings, and enable ‘Expose daemon on tcp://localhost:2375’ without TLS
150 - ** Restart Docker
151 -* Open Powershell as Administrator
152 - ** Execute "C:\Program Files\Docker\Docker\DockerCli.exe" -SwitchLinuxEngine
153 - ** Execute Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
154 - ** Execute curl.exe -L -o ubuntu-2004.appx https://aka.ms/wslubuntu2004
155 - ** Execute Add-AppxPackage .\ubuntu-2004.appx
156 - *** If errors occur, please consult https://learn.microsoft.com/en-us/windows/wsl/install-on-server. Rename the file to a zip, expand it, and add it to the path variable.
157 -* Ubuntu should now be a runnable program (press windows key, type ubuntu)
158 -* Open the ubuntu terminal, and finish the installation.
159 - ** After installation, execute: export DOCKER_HOST=tcp://localhost:2375
160 -* Go to the next section around installing the eMagiz Docker agent
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:
161 161  
162 -===3.6 Installation requirements Windows Server 2012 R2 ===
122 +152 (JMS) + 792 (Process Container = 944MB. This is the same as what is calculated under check size status
163 163  
164 -{{warning}}Please note that this section also applies to Windows Server 2019 version >1806{{/warning}}
124 +[[image:Main.Images.Microlearning.WebHome@expert-solution-architecture-determining-needed-memory--check-size-status-pop-up-required-non-heap-memory.png]]
165 165  
166 -These are the requirements to allow the installation of the eMagiz Docker agent:
167 -* Install & enable Hyper-V in Windows Server
168 - ** Go to Server Manager, Manage (top right), enable roles and features, select the desired roles and server selections. In the Features section, enable Hyper-V.
169 - ** Restart windows
170 -* Download a ubuntu server 18.04 (https://releases.ubuntu.com/18.04/ubuntu-18.04.6-live-server-amd64.iso )
171 -* Create a VM in HyperV.
172 - ** For this, choose Generation 1, the amount of memory you want to assign to ubuntu and thus to the containers. Please consider the overhead for memory as well (such as OS).
173 - ** Configure a virtual switch.
174 - ** Add a virtual Hard Disk with proper sizing (e.g. 30 GB)
175 - ** Install an operating system from bootable CD/DVD, ISO file
176 -* Install ubuntu downloaded previously on the VM
177 -* Install docker as per official ubuntu documentation (See https://docs.docker.com/engine/install/ubuntu/#install-using-the-repository) on the VM
178 -* Go to the next section around installing the eMagiz agent
126 +==== 3.2.4 Total recommended memory ====
179 179  
180 -=== 3.7 eMagiz Docker agent installation ===
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.
181 181  
182 -eMagiz needs to install a specific agent in the Docker instance that allows to download runtime images that needs to be installed on the Docker instance. The specific command to run inside the Docker instance is specific for the machine that is configured inside eMagiz Design & Deploy Architectures. It can be found inside the eMagiz iPaaS portal under Deploy Architecture. At the runtime connector, there is a right click option called Deploy Agent. That presents either the command or the location where that agent is installed.
131 +In this case the total recommended memory will be:
183 183  
184 -[[image:Main.Images.Microlearning.WebHome@expert-solution-architecture-onpremises-installguide-deployagent.png]]
133 +962 + 1080 + 944 = 2986MB
185 185  
186 -After installing the agent, you can use the Docker cheat sheet below to see if the docker containers are running and/or images are available.
135 +[[image:Main.Images.Microlearning.WebHome@expert-solution-architecture-determining-needed-memory--check-size-status-pop-up-recommended-sizing.png]]
187 187  
188 -== 4. Assignment ==
137 +=== 3.3 Comparison ===
189 189  
190 -Check out the cheatcheet for Docker command line:
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:
191 191  
192 -[[image:Main.Images.Microlearning.WebHome@docker-cheatsheet.png]]
142 +* The recommended size
143 +* The allocated size
144 +* The difference between recommended and allocated
193 193  
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 +
194 194  == 5. Key takeaways ==
195 195  
196 -* eMagiz uses runtime images to deploy emagiz runtime on dockerized environments. The runtime image holds all the information and components required to run the runtime
197 -* eMagiz has a specific agent that manages the download of that image to the on-premises server
198 -* The firewall of the on-premises environment should allow outgoing traffic without any restriction. In case that is not desirable, eMagiz can provide the addresses and ports needed to setup the right firewall rules.
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
199 199  
200 200  
201 201  
202 202  == 6. Suggested Additional Readings ==
203 203  
204 -N/A
205 -
248 +If you are interested in this topic and want more information on it please read the help text provided by eMagiz.
249 +
206 206  == 7. Silent demonstration video ==
207 207  
208 -N/A
252 +This video demonstrates how you could have handled the assignment and gives you some context on what you have just learned.
209 209  
254 +{{video attachment="expert-solution-architecture-determining-needed-memory.mp4" reference="Main.Videos.Microlearning.WebHome"/}}
255 +
210 210  )))((({{toc/}}))){{/container}}{{/container}}