Customizing the AtScale YAML File

This article describes how you can customize the YAML file, depending on what you want to accomplish in the AtScale topology.  Basically, we can split most of the services into a different host, remap ports, and utilize a load balancer.

Caution: AtScale only accepts local hostname as part of the host entry. If you have a VM that keeps on changing the hostname, you could have a potential problem during startup because some processes in AtScale do an update in the modeler.

-- default engine

INSERT INTO engines( engine_id, org_id, name, protocol, host, port, properties, default_engine )

VALUES ( '2591c41d-14f9-474b-6243-1a1470f80307', 'default', 'default', 'https', 'ubuntu-atscale.atscaledomain.com', '80', '{}', true )

ON CONFLICT (engine_id) DO UPDATE SET

protocol='http', host='ubuntu-atscale.atscaledomain.com', port='80';

EOM

) > /dev/null

exit 0

To counter that, in the yaml file, you can add internal and external hosts, but only for the load balancer DNS mapping.

    override:

   engine:
    port: 80
    schema: http
    hostname: 38.250.117.34.bc.googleusercontent.com

   modeler:
    port: 80
    schema: http
    hostname: 205.49.117.34.bc.googleusercontent.com

external:
engine:
load_balancer_url: http://38.250.117.34.bc.googleusercontent.com
apps:
load_balancer_url: http://205.49.117.34.bc.googleusercontent.com
sql:
load_balancer_url: http://54.208.233.35.bc.googleusercontent.com:11111
mdx:
load_balancer_url: http://38.250.117.34.bc.googleusercontent.com

 

This setting will allow you to extend the AtScale internal host vs. external load balancer with separate ports in the load balancer vs internal. 

 

Here is the working customization of AtScale with two load balancers with two ports mapped on 10500 to 80 and 10502 to 80:

installation_location: "/opt/atscale"

service_account: "atscale"

loadbalancer_dns_name: "205.49.117.34.bc.googleusercontent.com"

tls:
 enabled: false
 certificate: "/opt/atscale/conf/server.cert"
 key: "/opt/atscale/conf/server.key"

kerberos:
 enabled: false
 keytab: "/opt/atscale/conf/atscale.keytab"
 principal: "atscale/rw-ubuntu-1.us-west1-b.c.atscale-sales-demo.internal@REALM"

hosts:
 - dnsname: rw-coordinator.us-west1-a.c.atscale-sales-demo.internal

services:
  - coordinator

override:
  coordinator:
    id: 10

   engine:
    port: 80
    schema: http
    hostname: 38.250.117.34.bc.googleusercontent.com

   modeler:
    port: 80
    schema: http
    hostname: 205.49.117.34.bc.googleusercontent.com

  - dnsname: rw-database1.us-west1-a.c.atscale-sales-demo.internal

services:
  - database
  - coordinator

override:
  coordinator:
    id: 20

   engine:
    port: 80
    schema: http
    hostname: 38.250.117.34.bc.googleusercontent.com

   modeler:
    port: 80
    schema: http
    hostname: 205.49.117.34.bc.googleusercontent.com

  - dnsname: rw-database2.us-west1-a.c.atscale-sales-demo.internal

services:
  - database
  - coordinator

override:
  coordinator:
    id: 30

   engine:
    port: 80
    schema: http
    hostname: 38.250.117.34.bc.googleusercontent.com

   modeler:
    port: 80
    schema: http
    hostname: 205.49.117.34.bc.googleusercontent.com

  - dnsname: rw-engine-1.us-west1-a.c.atscale-sales-demo.internal

services:
  - engine
  - modeler

override:
  engine:
    port: 80
    schema: http
    hostname: 38.250.117.34.bc.googleusercontent.com

   modeler:
    port: 80
    schema: http
    hostname: 205.49.117.34.bc.googleusercontent.com
 - dnsname: rw-engine2.us-west1-a.c.atscale-sales-demo.internal

services:
  - engine
  - modeler

override:
  engine:
    port: 80
    schema: http
    hostname: 38.250.117.34.bc.googleusercontent.com

   modeler:
    port: 80
    schema: http
    hostname: 205.49.117.34.bc.googleusercontent.com


external:

  engine:
load_balancer_url: http://38.250.117.34.bc.googleusercontent.com

  apps:
load_balancer_url: http://205.49.117.34.bc.googleusercontent.com

  sql:
load_balancer_url: http://54.208.233.35.bc.googleusercontent.com:11111

  mdx:
load_balancer_url: http://38.250.117.34.bc.googleusercontent.com

The following is a complete customization of what you can do in atscale.yaml

engine:

  allow_local_license: true

agent:

  dcs:

backend: consul

  logbundle_location: '{{ atscale_log_location }}/bundles'

  ports:

http: 10525

  queue:

backend: consul

  t_ip: 'true'

  uwsgi_processes: 2

coordinator:

  base_path: /atscale

  id: 1

  ports:

client: 10513

connect: 10505

election: 10506

  security:

key: s59446c445a6d3437553051714e5635526547566563773d3d

key_cl: '`9Cfn;SD*5^Qxe^s'

key_cl_digest: sO4bf5RVbSwI1XB8ieWWm0nHc9U=

user: super

data:

  message_bus:

default_replication_factor: 1

  search_index:

partitioning:

   time_zone_id: system-default

  streams:

metrics:

   data_connector:

     buffered_writer:

       flush:

         duration: 5.seconds

     enabled: false

     error_handling:

       enable_error_logs: true

       include_error_log_messages: true

       tolerance: all

     max_poll_interval: 120.seconds

     max_poll_records: 20

     max_tasks: 1

     offset_committer:

       type: default

queries_execution_info:

   data_connector:

     buffered_writer:

       flush:

         duration: 3.seconds

     enabled: false

     error_handling:

       enable_error_logs: true

       include_error_log_messages: true

       tolerance: all

     max_poll_interval: 120.seconds

     max_poll_records: 10

     max_tasks: 1

     offset_committer:

       safe_aggregation:

         timeout: 2.hours

       type: safe-aggregation

   search_index:

     partitioning: Daily

     refresh_interval: 3.seconds

     replicas: 0

     shards: 1

queries_part_planned:

   data_connector:

     buffered_writer:

       flush:

         duration: 3.seconds

     enabled: false

     error_handling:

       enable_error_logs: true

       include_error_log_messages: true

       tolerance: all

     max_poll_interval: 120.seconds

     max_poll_records: 10

     max_tasks: 1

     offset_committer:

       safe_aggregation:

         timeout: 2.hours

       type: safe-aggregation

   search_index:

     partitioning: Daily

     refresh_interval: 3.seconds

     replicas: 0

     shards: 1

queries_planned:

   data_connector:

     buffered_writer:

       flush:

         duration: 3.seconds

     enabled: false

     error_handling:

       enable_error_logs: true

       include_error_log_messages: true

       tolerance: all

     max_poll_interval: 120.seconds

     max_poll_records: 10

     max_tasks: 1

     offset_committer:

       safe_aggregation:

         timeout: 2.hours

       type: safe-aggregation

   search_index:

     partitioning: Daily

     refresh_interval: 3.seconds

     replicas: 0

     shards: 1

query_events:

   data_connector:

     buffered_writer:

       flush:

         duration: 5.seconds

     enabled: false

     error_handling:

       enable_error_logs: true

       include_error_log_messages: true

       tolerance: all

     max_poll_interval: 120.seconds

     max_poll_records: 20

     max_tasks: 1

     offset_committer:

       type: default

data_agent:

  allow_local_license: false

  debug:

dev_mode: false

kerberos: false

  jvm:

base_java_opts: -J-Xms250m -J-server

gc_opts: -J-XX:+UseG1GC -J-XX:+UseAdaptiveGCBoundary

  memory: 2G

  metricsd:

jolokia:

   host: 127.0.0.1

   port: 12502

  ports:

http: 10502

jmx: 13502

remoting: 10507

database:

  database:

grafana:

   name: grafana

name: atscale

schemas:

   andromeda:

     name: andromeda

   atscale:

     name: atscale

   datadash:

     name: datadash

   infraapi:

     name: infraapi

   orchestrator:

     name: orchestrator

  ports:

external: 10518

internal: 10520

patroni_rest: 10519

  postgresql:

parameters:

   log_autovacuum_min_duration: 10000

   log_checkpoints: 'off'

   log_connections: 'off'

   log_destination: stderr

   log_directory: '{{ atscale_log_location }}/database'

   log_disconnections: 'off'

   log_duration: 'off'

   log_error_verbosity: TERSE

   log_file_mode: 384

   log_filename: postgresql-%Y-%m-%d_%H%M%S.log

   log_line_prefix: '%t [%p]: [%l-1] user=%u,db=%d,app=%a,client=%h '

   log_lock_waits: 'on'

   log_min_duration_statement: 2000

   log_rotation_age: 1d

   log_rotation_size: 0

   log_temp_files: -1

   log_truncate_on_rotation: 'on'

   logging_collector: 'on'

  security:

atscale:

   key: s5958527a593246735a513d3d

   username: atscale

replication:

   key: s4f474654567a5244545442434f4539585a586c76

   username: atscale_repl

super:

   key: s56586869616d3951563273335355354a5555465a

   username: atscale_super

datadash:

  debug:

dev_mode: false

  jvm:

base_java_opts: -J-Xms250m -J-server

gc_opts: -J-XX:+UseG1GC -J-XX:+UseAdaptiveGCBoundary

  memory: 2G

  ports:

http: 10501

deployment:

  messaging:

enabled: false

  mode: '{{ atscale_build_profile }}'

directory:

  ports:

egress:

   ldap: 10524

ldap: 10514

  security:

admin:

   key: s5958527a593246735a513d3d

egress:

  ports:

stats: 10517

  timeout:

client: 130m

server: 130m

engine:

  allow_local_license: false

  debug:

dev_mode: false

kerberos: false

  jvm:

base_java_opts: -J-Xms250m -J-server

gc_opts: -J-XX:+UseG1GC -J-XX:+UseAdaptiveGCBoundary

  memory: 8G

  metricsd:

jolokia:

   host: 127.0.0.1

   port: 12502

  ports:

egress:

   http: 10582

http: 10502

jmx: 13502

ping: 10587

ping_rtr: 10588

remoting: 10507

gov_enforce:

  ports:

egress:

   server: 10548

server: 10547

gov_rules:

  ports:

egress:

   server: 10546

server: 10545

grafana:

  ports:

egress:

   http: 10597

http: 10596

host:

  validation:

enabled: true

hosts:

- dnsname: '### Fully qualified domain name for the host running atscale'

  hostname: '### Hostname of the node if it''s different from the DNS entry. (ie:

what hostname -f returns)'

  services:

  - atscale

  - coordinator

infraapi:

  ports:

http: 10590

  uwsgi_processes: 1

ingress:

  keepalive_timeout: 65

  worker_connections: 1024

  worker_processes: 1

installation_location: '### Path where atscale is installed'

kerberos:

  enabled: false

  keytab: '### Path to keytab. ex: /opt/atscale/conf/atscale.keytab'

  krb5conf: system

  principal: '### Principal associated with the keytab. ex: atscaler/host.domain@REALM'

  validation:

enabled: true

kibana:

  ports:

egress:

   http: 10599

http: 10598

loadbalancer_dns_name: '### DNS entry used to get to atscale'

message_bus:

  memory: 256M

  metricsd:

jolokia:

   host: 127.0.0.1

   port: 12560

  ports:

egress:

   plaintext: 10578

jmx: 13560

plaintext: 10560

tls: 10561

message_exchange:

  cors:

allow:

   methods: ''

   origin: ''

  management:

topics:

   config_storage:

     partitions: 1

     replication_factor: 1

     topic: exchange-configs

   offset_storage:

     partitions: 1

     replication_factor: 1

     topic: exchange-offsets

   status_storage:

     partitions: 1

     replication_factor: 1

     topic: exchange-status

  memory: 256M

  metricsd:

jolokia:

   host: 127.0.0.1

   port: 12567

  ports:

egress:

   rest: 10577

jmx: 13567

rest: 10567

metadata_engine:

  allow_local_license: false

  debug:

dev_mode: false

kerberos: false

  jvm:

base_java_opts: -J-Xms250m -J-server

gc_opts: -J-XX:+UseG1GC -J-XX:+UseAdaptiveGCBoundary

  memory: 2G

  metricsd:

jolokia:

   host: 127.0.0.1

   port: 12502

  ports:

http: 10502

jmx: 13502

remoting: 10507

metricsd:

  agent:

flush_interval: 10s

interval: 30s

  logging:

rotation:

   interval: 1d

   max:

     archives: 10

     size: 20MB

target: file

  ports:

egress:

   server: 10529

server: 10528

statsd: 12560

modeler:

  app_mode: modeler

  flags:

skip_first_time_setup_dialog: false

  ports:

authorization: 10503

egress:

   authorization: 10583

   http: 10580

http: 10500

orchestrator:

  debug:

dev_mode: false

  jvm:

base_java_opts: -J-Xms250m -J-server

gc_opts: -J-XX:+UseG1GC -J-XX:+UseAdaptiveGCBoundary

  memory: 2G

  ports:

http: 10540

orchestrator_ui:

  app_mode: orchestrator

  deployment: saas

  flags:

skip_first_time_setup_dialog: false

  ports:

authorization: 10503

egress:

   authorization: 10583

   http: 10591

http: 10510

query_engine:

  allow_local_license: false

  debug:

dev_mode: false

kerberos: false

  jvm:

base_java_opts: -J-Xms250m -J-server

gc_opts: -J-XX:+UseG1GC -J-XX:+UseAdaptiveGCBoundary

  memory: 2G

  metricsd:

jolokia:

   host: 127.0.0.1

   port: 12541

  ports:

http: 10541

jmx: 13541

remoting: 10507

search_index:

  memory: 1G

  ports:

egress:

   http: 10575

http: 10570

transport: 10571

service_account: '### user running the service'

service_registry:

  addresses:

dns: 0.0.0.0

grpc: 0.0.0.0

http: 0.0.0.0

https: 0.0.0.0

  base_path: /atscale

  bind_addr: 0.0.0.0

  domain: atscale

  log_level: INFO

  ports:

dns: 10554

grpc: 10557

http: 10555

https: 10556

serf_lan: 10551

serf_wan: 10552

server: 10550

  ui: true

servicecontrol:

  ports:

http: 10516

tls:

  certificate: '### Path to certificate for TLS. ex: /opt/atscale/conf/server.cert'

  custom_truststore:

enabled: false

location: '### Path to the provided truststore.'

password: '### Password for the provided truststore.'

  database:

enabled: false

  default:

bootstrap_tls: true

ca_cert: '### Path to default_tls ca_chain, on saas this is in $HOME/root.key'

ca_key: '### Path to default_tls ca_chain, on saas this is in $HOME/root.key'

enabled: true

  enabled: false

  generate_certs: false

  internal:

ca_cert: '### Path to key for TLS. ex: /opt/atscale/conf/server.key'

enabled: false

  key: '### Path to key for TLS. ex: /opt/atscale/conf/server.key'

  keystore:

key: s6347467a63336476636d513d

  validation:

enabled: true

vault:

  keyfile: '{{ atscale_version_location }}/conf/vault/unseal_key'

  name: vault

  ports:

api: 10558

cluster: 10559

  role_name: agent_role

virtualization:

  tmp_dir: /tmp

virtualization_listener:

  cores: 2

  driver_port: 10531

  memory: 4G

  name: virtualization_listener

  port: 10511

  shuffle_partitions: 100

  webui_port: 10530

virtualization_supervisor:

  cores: 2

  manager_port: 10532

  memory: 4G

  name: virtualization_supervisor

  port: 10533

  webui_port: 10534

virtualization_worker:

  controller_process_memory: 2G

  cores: 2

  memory: 8G

  name: virtualization_worker

  port: 10535

  webui_port: 10536

 

Was this article helpful?

0 out of 0 found this helpful