On-Prem Query_Engine
This document will serve as guidance on how to deploy Query_Engine for AtScale.
Requirements
- Three EC2 instances + n instances for query_engine
- Two network load balancers (NLB)
-
Seven target groups
- 3 for the Developer access port
- 4 for Runtime user access port
- Port remap in yaml for query_engine to 10502 (optional)
Deployment
AtScale yaml file:
engine:
memory: 31G
hosts:
- dnsname: ip-172-31-15-214.us-west-2.compute.internal
override:
coordinator:
id: 10
services:
- message_exchange
- schema_registry
- agent
- ingress
- message_bus
- service_registry
- egress
- search_index
- coordinator
- dnsname: ip-172-31-13-246.us-west-2.compute.internal
override:
coordinator:
id: 20
services:
- database
- service_registry
- egress
- modeler
- gov_rules
- engine
- gov_enforce
- agent
- coordinator
- orchestrator
- ingress
- dnsname: ip-172-31-9-89.us-west-2.compute.internal
override:
coordinator:
id: 30
services:
- database
- service_registry
- egress
- modeler
- gov_rules
- engine
- gov_enforce
- agent
- coordinator
- orchestrator
- ingress
- dnsname: ip-172-31-4-158.us-west-2.compute.internal
services:
- schema_registry
- message_bus
- egress
- search_index
- ingress
- service_registry
- message_exchange
- agent
- query_engine
override:
query_engine:
ports:
http: 10502
installation_location: /opt/atscale
kerberos:
enabled: false
keytab: /opt/atscale/conf/atscale.keytab
principal: atscale/ip-172-31-34-240.us-west-2.compute.internal@REALM
loadbalancer_dns_name: ATSCALENLB-1eb7372bbaef4453.elb.us-west-2.amazonaws.com
query_engine:
memory: 31G
service_account: atscale
tls:
certificate: /opt/atscale/conf/server.cert
enabled: false
key: /opt/atscale/conf/server.key
After completion of the AtScale deployment, the next step is to map the target group into NLB.
Load Balancer
Create target group
Query-10500
Query-10502
AtScale-10502
The reason we created two separate target groups is that the query_engine component doesn’t come with the modeler. That’s why we need to create two separate groups to avoid confusion during the development process.
Once you have completed the mapping, attach those targeted groups to the NLBs.
Configure the Load Balancer
Create two NLBs.
Point the appropriate target group with the right NLB. The user access should have only the AtScale cluster, and the Runtime user should utilize the query_engine.
Update the Engine
Engine setting needs to be updated:
LOAD.BALANCER.MDX.URL
Make sure you use the http/https format, as seen in the example below:
LOAD.BALANCER.SQL.URL
Make sure you use the http/https format, as seen in the example below:
Summary
The reason why we need two load balancers is that query_engine doesn’t have a modeler component. When you only set one load balancer, you might encounter a 50% chance of failure during development, because the load balancer points the session you are working in to the query_engine. The only way to avoid this issue is by creating two separate LBs, so that the developer utilizes two AtScale clusters, and a runtime user utilizes the query_engine + AtScale cluster.
The default port of query_engine is 10541; this port must also be remapped in the yaml to communicate with the rest of the AtScale query cluster.