@@ -40,8 +40,6 @@ logging_format=""
4040logging_group=" "
4141logging_stream=" "
4242
43- verbose=0
44-
4543while getopts " c:d:p:s:u:v:f:g:r:" opt; do
4644 case " $opt " in
4745 c) config_file=$OPTARG
6866shift $(( OPTIND- 1 ))
6967[ " $1 " = " --" ] && shift
7068
71- verbose=1
7269echo " config_file=$config_file , solace_directory=$solace_directory , admin_password_file=$admin_password_file , \
7370 solace_uri=$solace_uri , disk_size=$disk_size , volume=$disk_volume , logging_format=$logging_format , \
7471 logging_group=$logging_group , logging_stream=$logging_stream , Leftovers: $@ "
103100# # Try to load solace_uri as a docker registry uri
104101echo " ` date` Testing ${solace_uri} for docker registry uri:"
105102if [ -z " ` docker pull ${solace_uri} ` " ] ; then
103+ # If NOT in this branch then load was successful
106104 echo " ` date` INFO: Found that ${solace_uri} was not a docker registry uri, retrying if it is a download link"
107105 if [[ ${solace_uri} == * " solace.com/download" * ]]; then
108106 REAL_LINK=${solace_uri}
@@ -189,18 +187,27 @@ chmod 0600 /var/lib/solace/swap
189187swapon -f /var/lib/solace/swap
190188grep -q ' solace\/swap' /etc/fstab || sudo sh -c ' echo "/var/lib/solace/swap none swap sw 0 0" >> /etc/fstab'
191189
190+ echo " ` date` INFO: Applying TCP for WAN optimizations" & >> ${LOG_FILE}
191+ echo '
192+ net.core.rmem_max = 134217728
193+ net.core.wmem_max = 134217728
194+ net.ipv4.tcp_rmem = 4096 25165824 67108864
195+ net.ipv4.tcp_wmem = 4096 25165824 67108864
196+ net.ipv4.tcp_mtu_probing=1' | sudo tee /etc/sysctl.d/98-solace-sysctl.conf
197+ sudo sysctl -p /etc/sysctl.d/98-solace-sysctl.conf
198+
192199cd ${solace_directory}
193200
194201host_name=` hostname`
195202host_info=` grep ${host_name} ${config_file} `
196- local_role=` echo $host_info | grep -o -E ' Monitor|MessageBrokerPrimary|MessageBrokerBackup ' `
203+ local_role=` echo $host_info | grep -o -E ' Monitor|EventBrokerPrimary|EventBrokerBackup ' `
197204
198- primary_stack=` cat ${config_file} | grep MessageBrokerPrimary | rev | cut -d " -" -f1 | rev | tr ' [:upper:]' ' [:lower:]' `
199- backup_stack=` cat ${config_file} | grep MessageBrokerBackup | rev | cut -d " -" -f1 | rev | tr ' [:upper:]' ' [:lower:]' `
205+ primary_stack=` cat ${config_file} | grep EventBrokerPrimary | rev | cut -d " -" -f1 | rev | tr ' [:upper:]' ' [:lower:]' `
206+ backup_stack=` cat ${config_file} | grep EventBrokerBackup | rev | cut -d " -" -f1 | rev | tr ' [:upper:]' ' [:lower:]' `
200207monitor_stack=` cat ${config_file} | grep Monitor | rev | cut -d " -" -f1 | rev | tr ' [:upper:]' ' [:lower:]' `
201208
202209# Get the IP addressed for node
203- for role in Monitor MessageBrokerPrimary MessageBrokerBackup
210+ for role in Monitor EventBrokerPrimary EventBrokerBackup
204211do
205212 role_info=` grep ${role} ${config_file} `
206213 role_name=${role_info%% * }
209216 Monitor )
210217 MONITOR_IP=${role_ip}
211218 ;;
212- MessageBrokerPrimary )
219+ EventBrokerPrimary )
213220 PRIMARY_IP=${role_ip}
214221 ;;
215- MessageBrokerBackup )
222+ EventBrokerBackup )
216223 BACKUP_IP=${role_ip}
217224 ;;
218225 esac
@@ -224,21 +231,31 @@ case $local_role in
224231 ROUTER_NAME=" monitor${monitor_stack} "
225232 REDUNDANCY_CFG=" "
226233 ;;
227- MessageBrokerPrimary )
234+ EventBrokerPrimary )
228235 NODE_TYPE=" message_routing"
229236 ROUTER_NAME=" primary${primary_stack} "
230237 REDUNDANCY_CFG=" --env redundancy_matelink_connectvia=${BACKUP_IP} --env redundancy_activestandbyrole=primary --env configsync_enable=yes"
231238 is_primary=" true"
232239 ;;
233- MessageBrokerBackup )
240+ EventBrokerBackup )
234241 NODE_TYPE=" message_routing"
235242 ROUTER_NAME=" backup${backup_stack} "
236243 REDUNDANCY_CFG=" --env redundancy_matelink_connectvia=${PRIMARY_IP} --env redundancy_activestandbyrole=backup --env configsync_enable=yes"
237244 ;;
238245esac
239246
240- if [ $disk_size == " 0" ]; then
241- SPOOL_MOUNT=" -v internalSpool:/usr/sw/internalSpool -v adbBackup:/usr/sw/adb -v softAdb:/usr/sw/internalSpool/softAdb"
247+ # Setup password file permissions
248+ chown -R 1000001 $( dirname ${admin_password_file} )
249+ chmod 700 $( dirname ${admin_password_file} )
250+
251+ if [[ ${disk_size} == " 0" ]]; then
252+ # Create new volumes that the PubSub+ Message Broker container can use to consume and store data.
253+ docker volume create --name=jail
254+ docker volume create --name=var
255+ docker volume create --name=softAdb
256+ docker volume create --name=diagnostics
257+ docker volume create --name=internalSpool
258+ SPOOL_MOUNT=" -v jail:/usr/sw/jail -v var:/usr/sw/var -v softAdb:/usr/sw/internalSpool/softAdb -v diagnostics:/var/lib/solace/diags -v internalSpool:/usr/sw/internalSpool"
242259else
243260 echo " ` date` Create primary partition on new disk"
244261 (
@@ -252,56 +269,70 @@ else
252269
253270 mkfs.xfs ${disk_volume} 1 -m crc=0
254271 UUID=` blkid -s UUID -o value ${disk_volume} 1`
255- echo " UUID=${UUID} /opt/pubsubplus xfs defaults 0 0" >> /etc/fstab
272+ echo " UUID=${UUID} /opt/pubsubplus xfs defaults,uid=1000001 0 0" >> /etc/fstab
256273 mkdir /opt/pubsubplus
274+ mkdir /opt/pubsubplus/jail
275+ mkdir /opt/pubsubplus/var
276+ mkdir /opt/pubsubplus/softAdb
277+ mkdir /opt/pubsubplus/diagnostics
278+ mkdir /opt/pubsubplus/internalSpool
257279 mount -a
258- SPOOL_MOUNT=" -v /opt/pubsubplus:/usr/sw/internalSpool -v /opt/pubsubplus:/usr/sw/adb -v /opt/pubsubplus:/usr/sw/internalSpool/softAdb"
280+ chown 1000001 -R /opt/pubsubplus/
281+ SPOOL_MOUNT=" -v /opt/pubsubplus/jail:/usr/sw/jail -v /opt/pubsubplus/var:/usr/sw/var -v /opt/pubsubplus/softAdb:/usr/sw/internalSpool/softAdb -v /opt/pubsubplus/diagnostics:/var/lib/solace/diags -v /opt/pubsubplus/internalSpool:/usr/sw/internalSpool"
259282fi
260283
261- # Start up the SolOS docker instance with HA config keys
262- echo " ` date` INFO: Executing 'docker create'"
284+ # Define a create script
285+ tee ~ /docker-create << -EOF
286+ #!/bin/bash
263287docker create \
264- --uts=host \
265- --shm-size=${shmsize} \
266- --ulimit core=-1 \
267- --ulimit memlock=-1 \
268- --ulimit nofile=${ulimit_nofile} \
269- --net=host \
270- --restart=always \
271- -v jail:/usr/sw/jail \
272- -v var:/usr/sw/var \
273- -v /mnt/pubsubplus/secrets:/run/secrets \
274- ${SPOOL_MOUNT} \
275- --log-driver=awslogs \
276- --log-opt awslogs-group=${logging_group} \
277- --log-opt awslogs-stream=${logging_stream} \
278- --env " system_scaling_maxconnectioncount=${maxconnectioncount} " \
279- --env " logging_debug_output=all" \
280- --env " logging_debug_format=${logging_format} " \
281- --env " logging_command_output=all" \
282- --env " logging_command_format=${logging_format} " \
283- --env " logging_system_output=all" \
284- --env " logging_system_format=${logging_format} " \
285- --env " logging_event_output=all" \
286- --env " logging_event_format=${logging_format} " \
287- --env " logging_kernel_output=all" \
288- --env " logging_kernel_format=${logging_format} " \
289- --env " nodetype=${NODE_TYPE} " \
290- --env " routername=${ROUTER_NAME} " \
291- --env " username_admin_globalaccesslevel=admin" \
292- --env " username_admin_passwordfilepath=$( basename ${admin_password_file} ) " \
293- --env " service_ssh_port=2222" \
294- ${REDUNDANCY_CFG} \
295- --env " redundancy_group_passwordfilepath=$( basename ${admin_password_file} ) " \
296- --env " redundancy_enable=yes" \
297- --env " redundancy_group_node_primary${primary_stack} _nodetype=message_routing" \
298- --env " redundancy_group_node_primary${primary_stack} _connectvia=${PRIMARY_IP} " \
299- --env " redundancy_group_node_backup${backup_stack} _nodetype=message_routing" \
300- --env " redundancy_group_node_backup${backup_stack} _connectvia=${BACKUP_IP} " \
301- --env " redundancy_group_node_monitor${monitor_stack} _nodetype=monitoring" \
302- --env " redundancy_group_node_monitor${monitor_stack} _connectvia=${MONITOR_IP} " \
303- --name=solace ${SOLACE_IMAGE_ID}
304-
288+ --uts=host \
289+ --shm-size=${shmsize} \
290+ --ulimit core=-1 \
291+ --ulimit memlock=-1 \
292+ --ulimit nofile=${ulimit_nofile} \
293+ --net=host \
294+ --restart=always \
295+ -v /mnt/pubsubplus/secrets:/run/secrets \
296+ ${SPOOL_MOUNT} \
297+ --log-driver awslogs \
298+ --log-opt awslogs-group=${logging_group} \
299+ --log-opt awslogs-stream=${logging_stream} \
300+ --env "system_scaling_maxconnectioncount=${maxconnectioncount} " \
301+ --env "logging_debug_output=all" \
302+ --env "logging_debug_format=${logging_format} " \
303+ --env "logging_command_output=all" \
304+ --env "logging_command_format=${logging_format} " \
305+ --env "logging_system_output=all" \
306+ --env "logging_system_format=${logging_format} " \
307+ --env "logging_event_output=all" \
308+ --env "logging_event_format=${logging_format} " \
309+ --env "logging_kernel_output=all" \
310+ --env "logging_kernel_format=${logging_format} " \
311+ --env "nodetype=${NODE_TYPE} " \
312+ --env "routername=${ROUTER_NAME} " \
313+ --env "username_admin_globalaccesslevel=admin" \
314+ --env "username_admin_passwordfilepath=$( basename ${admin_password_file} ) " \
315+ --env "service_ssh_port=2222" \
316+ --env "service_webtransport_port=8008" \
317+ --env "service_webtransport_tlsport=1443" \
318+ --env "service_semp_tlsport=1943" \
319+ ${REDUNDANCY_CFG} \
320+ --env "redundancy_authentication_presharedkey_key=` cat ${admin_password_file} | awk ' {x=$0;for(i=length;i<51;i++)x=x "0";}END{print x}' | base64` " \
321+ --env "redundancy_enable=yes" \
322+ --env "redundancy_group_node_primary${primary_stack} _nodetype=message_routing" \
323+ --env "redundancy_group_node_primary${primary_stack} _connectvia=${PRIMARY_IP} " \
324+ --env "redundancy_group_node_backup${backup_stack} _nodetype=message_routing" \
325+ --env "redundancy_group_node_backup${backup_stack} _connectvia=${BACKUP_IP} " \
326+ --env "redundancy_group_node_monitor${monitor_stack} _nodetype=monitoring" \
327+ --env "redundancy_group_node_monitor${monitor_stack} _connectvia=${MONITOR_IP} " \
328+ --name=solace ${SOLACE_IMAGE_ID}
329+ EOF
330+
331+ # Make the file executable
332+ chmod +x ~ /docker-create
333+
334+ echo " ` date` INFO: Creating the Solace container"
335+ ~ /docker-create
305336
306337# Start the solace service and enable it at system start up.
307338chkconfig --add solace-pubsubplus
0 commit comments