From 81fdde5e0d4d9128aa6037e7ca65559be4208e9b Mon Sep 17 00:00:00 2001 From: Saurabh Ahuja Date: Fri, 19 Jan 2024 18:00:23 +0000 Subject: [PATCH 1/9] compose files added --- .../docker/docker-compose-nfs.yml | 146 ++++++++++++++++++ .../docker/docker-compose.yml | 121 +++++++++++++++ 2 files changed, 267 insertions(+) create mode 100644 OracleDatabase/RAC/OracleRealApplicationClusters/samples/installscenarios/docker/docker-compose-nfs.yml create mode 100644 OracleDatabase/RAC/OracleRealApplicationClusters/samples/installscenarios/docker/docker-compose.yml diff --git a/OracleDatabase/RAC/OracleRealApplicationClusters/samples/installscenarios/docker/docker-compose-nfs.yml b/OracleDatabase/RAC/OracleRealApplicationClusters/samples/installscenarios/docker/docker-compose-nfs.yml new file mode 100644 index 0000000000..ab4aa9be77 --- /dev/null +++ b/OracleDatabase/RAC/OracleRealApplicationClusters/samples/installscenarios/docker/docker-compose-nfs.yml @@ -0,0 +1,146 @@ +--- +version: "3" +services: + racdns: + container_name: ${DNS_CONTAINER_NAME} + hostname: ${DNS_HOST_NAME} + image: ${DNS_IMAGE_NAME} + dns_search: ${DNS_DOMAIN} + environment: + SETUP_DNS_CONFIG_FILES: "setup_true" + DOMAIN_NAME: ${DNS_DOMAIN} + RAC_NODE_NAME_PREFIX: ${RAC_NODE_NAME_PREFIX} + sysctls: + - net.ipv6.conf.all.disable_ipv6=1 + cap_add: + - SYS_ADMIN + healthcheck: + test: ["CMD-SHELL", "if [ `cat /tmp/orod.log | grep -c 'DNS Server IS READY TO USE'` -ge 1 ]; then exit 0; else exit 1; fi"] + interval: ${HEALTHCHECK_INTERVAL} + timeout: ${HEALTHCHECK_TIMEOUT} + retries: ${HEALTHCHECK_RETRIES} + networks: + rac_pub1_nw: + ipv4_address: ${DNS_PUBLIC_IP} + racnode-storage: + container_name: ${STORAGE_CONTAINER_NAME} + hostname: ${STORAGE_HOST_NAME} + image: ${STORAGE_IMAGE_NAME} + dns_search: ${DNS_DOMAIN} + volumes: + - ${NFS_STORAGE_VOLUME}:/oradata + - /sys/fs/cgroup:/sys/fs/cgroup:ro + tmpfs: + - /run + cap_add: + - SYS_ADMIN + - AUDIT_WRITE + healthcheck: + test: ["CMD-SHELL", "if [ `cat /tmp/orod.log | grep -c 'NFS Server is up and running'` -ge 1 ]; then exit 0; else exit 1; fi"] + interval: ${HEALTHCHECK_INTERVAL} + timeout: ${HEALTHCHECK_TIMEOUT} + retries: ${HEALTHCHECK_RETRIES} + networks: + rac_priv1_nw: + ipv4_address: ${STORAGE_PRIVATE_IP} + racnode1: + depends_on: + racdns: + condition: service_healthy + container_name: ${RACNODE1_CONTAINER_NAME} + hostname: ${RACNODE1_HOST_NAME} + image: ${RACNODE1_IMAGE_NAME} + restart: always + dns: ${DNS_PUBLIC_IP} + dns_search: ${DNS_DOMAIN} + volumes: + - /boot:/boot:ro + - /opt/.secrets:/run/secrets:ro + - /dev/shm + - /opt/containers/rac_host_file:/etc/hosts + - /sys/fs/cgroup:/sys/fs/cgroup:ro + - racstorage:/oradata + tmpfs: + - /dev/shm:rw,exec,size=4G + - /run + privileged: false + environment: + DNS_SERVERS: ${DNS_PUBLIC_IP} + NODE_VIP: ${RACNODE1_NODE_VIP} + VIP_HOSTNAME: ${RACNODE1_VIP_HOSTNAME} + PRIV_IP: ${RACNODE1_PRIV_IP} + PRIV_HOSTNAME: ${RACNODE1_PRIV_HOSTNAME} + OP_TYPE: INSTALL + PUBLIC_IP: ${RACNODE1_PUBLIC_IP} + PUBLIC_HOSTNAME: ${RACNODE1_PUBLIC_HOSTNAME} + SCAN_NAME: ${SCAN_NAME} + DOMAIN: ${DNS_DOMAIN} + ASM_DEVICE_LIST: ${ASM_DEVICE_LIST} + ASM_DISCOVERY_DIR: ${ASM_DISCOVERY_DIR} + CMAN_HOSTNAME: ${CMAN_HOSTNAME} + CMAN_IP: ${CMAN_IP} + COMMON_OS_PWD_FILE: ${COMMON_OS_PWD_FILE} + PWD_KEY: ${PWD_KEY} + ulimits: + rtprio: 99 + cap_add: + - SYS_RESOURCE + - NET_ADMIN + - SYS_NICE + devices: + - "${ASM_DISK1}:${ASM_DEVICE1}" + - "${ASM_DISK2}:${ASM_DEVICE2}" + cpu_rt_runtime: 95000 + networks: + - rac_pub1_nw + - rac_priv1_nw + healthcheck: + test: ["CMD-SHELL", "if [ `cat /tmp/orod.log | grep -c 'ORACLE RAC DATABASE IS READY TO USE'` -ge 1 ]; then exit 0; else exit 1; fi"] + interval: ${HEALTHCHECK_INTERVAL} + timeout: ${HEALTHCHECK_TIMEOUT} + retries: ${HEALTHCHECK_RETRIES} + racnode-cman: + depends_on: + racdns: + condition: service_healthy + racnode1: + condition: service_healthy + container_name: ${CMAN_CONTAINER_NAME} + hostname: ${CMAN_HOST_NAME} + image: ${CMAN_IMAGE_NAME} + dns_search: ${DNS_DOMAIN} + environment: + DOMAIN_NAME: ${DNS_DOMAIN} + PUBLIC_HOSTNAME: ${CMAN_PUBLIC_HOSTNAME} + SCAN_NAME: ${SCAN_NAME} + SCAN_IP: ${SCAN_IP} + PUBLIC_IP: ${CMAN_PUBLIC_IP} + privileged: false + ports: + - 1521:1521 + networks: + rac_pub1_nw: + ipv4_address: ${CMAN_PUBLIC_IP} + healthcheck: + test: ["CMD-SHELL", "if [ `cat /tmp/orod.log | grep -c 'CONNECTION MANAGER IS READY TO USE'` -ge 1 ]; then exit 0; else exit 1; fi"] + interval: ${HEALTHCHECK_INTERVAL} + timeout: ${HEALTHCHECK_TIMEOUT} + retries: ${HEALTHCHECK_RETRIES} +networks: + rac_pub1_nw: + name: ${PUBLIC_NETWORK_NAME} + driver: bridge + ipam: + driver: default + config: + - subnet: "${PUBLIC_NETWORK_SUBNET}" + rac_priv1_nw: + name: ${PRIVATE_NETWORK_NAME} + driver: bridge + ipam: + driver: default + config: + - subnet: "${PRIVATE_NETWORK_SUBNET}" +volumes: + racstorage: + external: true \ No newline at end of file diff --git a/OracleDatabase/RAC/OracleRealApplicationClusters/samples/installscenarios/docker/docker-compose.yml b/OracleDatabase/RAC/OracleRealApplicationClusters/samples/installscenarios/docker/docker-compose.yml new file mode 100644 index 0000000000..264b90dba2 --- /dev/null +++ b/OracleDatabase/RAC/OracleRealApplicationClusters/samples/installscenarios/docker/docker-compose.yml @@ -0,0 +1,121 @@ +--- +version: "3" +services: + racdns: + container_name: ${DNS_CONTAINER_NAME} + hostname: ${DNS_HOST_NAME} + image: ${DNS_IMAGE_NAME} + dns_search: ${DNS_DOMAIN} + environment: + SETUP_DNS_CONFIG_FILES: "setup_true" + DOMAIN_NAME: ${DNS_DOMAIN} + RAC_NODE_NAME_PREFIX: ${RAC_NODE_NAME_PREFIX} + sysctls: + - net.ipv6.conf.all.disable_ipv6=1 + cap_add: + - SYS_ADMIN + healthcheck: + test: ["CMD-SHELL", "if [ `cat /tmp/orod.log | grep -c 'DNS Server IS READY TO USE'` -ge 1 ]; then exit 0; else exit 1; fi"] + interval: ${HEALTHCHECK_INTERVAL} + timeout: ${HEALTHCHECK_TIMEOUT} + retries: ${HEALTHCHECK_RETRIES} + networks: + rac_pub1_nw: + ipv4_address: ${DNS_PUBLIC_IP} + racnode1: + depends_on: + racdns: + condition: service_healthy + container_name: ${RACNODE1_CONTAINER_NAME} + hostname: ${RACNODE1_HOST_NAME} + image: ${RACNODE1_IMAGE_NAME} + restart: always + dns: ${DNS_PUBLIC_IP} + dns_search: ${DNS_DOMAIN} + volumes: + - /boot:/boot:ro + - /opt/.secrets:/run/secrets:ro + - /dev/shm + - /opt/containers/rac_host_file:/etc/hosts + - /sys/fs/cgroup:/sys/fs/cgroup:ro + tmpfs: + - /dev/shm:rw,exec,size=4G + - /run + privileged: false + environment: + DNS_SERVERS: ${DNS_PUBLIC_IP} + NODE_VIP: ${RACNODE1_NODE_VIP} + VIP_HOSTNAME: ${RACNODE1_VIP_HOSTNAME} + PRIV_IP: ${RACNODE1_PRIV_IP} + PRIV_HOSTNAME: ${RACNODE1_PRIV_HOSTNAME} + OP_TYPE: INSTALL + PUBLIC_IP: ${RACNODE1_PUBLIC_IP} + PUBLIC_HOSTNAME: ${RACNODE1_PUBLIC_HOSTNAME} + SCAN_NAME: ${SCAN_NAME} + DOMAIN: ${DNS_DOMAIN} + ASM_DEVICE_LIST: ${ASM_DEVICE_LIST} + ASM_DISCOVERY_DIR: ${ASM_DISCOVERY_DIR} + CMAN_HOSTNAME: ${CMAN_HOSTNAME} + CMAN_IP: ${CMAN_IP} + COMMON_OS_PWD_FILE: ${COMMON_OS_PWD_FILE} + PWD_KEY: ${PWD_KEY} + ulimits: + rtprio: 99 + cap_add: + - SYS_RESOURCE + - NET_ADMIN + - SYS_NICE + devices: + - "${ASM_DISK1}:${ASM_DEVICE1}" + - "${ASM_DISK2}:${ASM_DEVICE2}" + cpu_rt_runtime: 95000 + networks: + - rac_pub1_nw + - rac_priv1_nw + healthcheck: + test: ["CMD-SHELL", "if [ `cat /tmp/orod.log | grep -c 'ORACLE RAC DATABASE IS READY TO USE'` -ge 1 ]; then exit 0; else exit 1; fi"] + interval: ${HEALTHCHECK_INTERVAL} + timeout: ${HEALTHCHECK_TIMEOUT} + retries: ${HEALTHCHECK_RETRIES} + racnode-cman: + depends_on: + racdns: + condition: service_healthy + racnode1: + condition: service_healthy + container_name: ${CMAN_CONTAINER_NAME} + hostname: ${CMAN_HOST_NAME} + image: ${CMAN_IMAGE_NAME} + dns_search: ${DNS_DOMAIN} + environment: + DOMAIN_NAME: ${DNS_DOMAIN} + PUBLIC_HOSTNAME: ${CMAN_PUBLIC_HOSTNAME} + SCAN_NAME: ${SCAN_NAME} + SCAN_IP: ${SCAN_IP} + PUBLIC_IP: ${CMAN_PUBLIC_IP} + privileged: false + ports: + - 1521:1521 + networks: + rac_pub1_nw: + ipv4_address: ${CMAN_PUBLIC_IP} + healthcheck: + test: ["CMD-SHELL", "if [ `cat /tmp/orod.log | grep -c 'CONNECTION MANAGER IS READY TO USE'` -ge 1 ]; then exit 0; else exit 1; fi"] + interval: ${HEALTHCHECK_INTERVAL} + timeout: ${HEALTHCHECK_TIMEOUT} + retries: ${HEALTHCHECK_RETRIES} +networks: + rac_pub1_nw: + name: ${PUBLIC_NETWORK_NAME} + driver: bridge + ipam: + driver: default + config: + - subnet: "${PUBLIC_NETWORK_SUBNET}" + rac_priv1_nw: + name: ${PRIVATE_NETWORK_NAME} + driver: bridge + ipam: + driver: default + config: + - subnet: "${PRIVATE_NETWORK_SUBNET}" \ No newline at end of file From 1513997df3e34948a3e35d584f35743212d62856 Mon Sep 17 00:00:00 2001 From: Saurabh Ahuja Date: Sun, 21 Jan 2024 09:37:12 +0000 Subject: [PATCH 2/9] rhnsd changes alongwith compose files --- .../dockerfiles/19.3.0/setupGridEnv.sh | 49 +++++-- .../dockerfiles/21.3.0/setupGridEnv.sh | 49 +++++-- .../blockdevices/docker-compose-addition.yml | 73 ++++++++++ .../{ => blockdevices}/docker-compose.yml | 0 .../nfsdevices/docker-compose-addition.yml | 71 ++++++++++ .../docker-compose.yml} | 3 - .../blockdevices/podman-compose-addition.yml | 64 +++++++++ .../podman/blockdevices/podman-compose.yml | 128 ++++++++++++++++++ 8 files changed, 404 insertions(+), 33 deletions(-) create mode 100644 OracleDatabase/RAC/OracleRealApplicationClusters/samples/installscenarios/docker/blockdevices/docker-compose-addition.yml rename OracleDatabase/RAC/OracleRealApplicationClusters/samples/installscenarios/docker/{ => blockdevices}/docker-compose.yml (100%) create mode 100644 OracleDatabase/RAC/OracleRealApplicationClusters/samples/installscenarios/docker/nfsdevices/docker-compose-addition.yml rename OracleDatabase/RAC/OracleRealApplicationClusters/samples/installscenarios/docker/{docker-compose-nfs.yml => nfsdevices/docker-compose.yml} (97%) create mode 100644 OracleDatabase/RAC/OracleRealApplicationClusters/samples/installscenarios/podman/blockdevices/podman-compose-addition.yml create mode 100644 OracleDatabase/RAC/OracleRealApplicationClusters/samples/installscenarios/podman/blockdevices/podman-compose.yml diff --git a/OracleDatabase/RAC/OracleRealApplicationClusters/dockerfiles/19.3.0/setupGridEnv.sh b/OracleDatabase/RAC/OracleRealApplicationClusters/dockerfiles/19.3.0/setupGridEnv.sh index 5d5e3842de..0f8b69d20d 100644 --- a/OracleDatabase/RAC/OracleRealApplicationClusters/dockerfiles/19.3.0/setupGridEnv.sh +++ b/OracleDatabase/RAC/OracleRealApplicationClusters/dockerfiles/19.3.0/setupGridEnv.sh @@ -192,22 +192,40 @@ fi ####################################### Set Resetting Failed Units ########################## resetFailedUnits() { -if [ "${RESET_FAILED_SYSTEMD}" != 'false' ]; then - - cp $SCRIPT_DIR/$RESET_FAILED_UNITS /var/tmp/$RESET_FAILED_UNITS - chmod 755 /var/tmp/$RESET_FAILED_UNITS - print_message "Setting Crontab" - cmd='su - $GRID_USER -c "sudo crontab $SCRIPT_DIR/$SET_CRONTAB"' - eval $cmd - - if [ $? -eq 0 ];then - print_message "Sucessfully installed $SET_CRONTAB using crontab" - else - error_exit "Error occurred in crontab setup" - fi - -fi + if [ "${RESET_FAILED_SYSTEMD}" != 'false' ]; then + # Define the service name + SERVICE_NAME="rhnsd" + + # Check if the service is running + if pgrep -x "$SERVICE_NAME" >/dev/null; then + print_message "$SERVICE_NAME is running." + + # Check if the service is responding + if ! systemctl is-active --quiet "$SERVICE_NAME"; then + print_message "$SERVICE_NAME is not responding. Stopping the service." + systemctl stop "$SERVICE_NAME" + systemctl disable "$SERVICE_NAME" + print_message "$SERVICE_NAME stopped." + else + print_message "$SERVICE_NAME is responsive. No action needed." + fi + else + print_message "$SERVICE_NAME is not running." + fi + + cp $SCRIPT_DIR/$RESET_FAILED_UNITS /var/tmp/$RESET_FAILED_UNITS + chmod 755 /var/tmp/$RESET_FAILED_UNITS + print_message "Setting Crontab" + cmd='su - $GRID_USER -c "sudo crontab $SCRIPT_DIR/$SET_CRONTAB"' + eval $cmd + + if [ $? -eq 0 ];then + print_message "Sucessfully installed $SET_CRONTAB using crontab" + else + error_exit "Error occurred in crontab setup" + fi + fi } @@ -323,6 +341,7 @@ fi print_message "Process id of the program : $TOP_ID" ##### start ntpd ####### startNTPD +resetFailedUnits pre_grid_deploy_steps checkHostName SetupEtcHosts diff --git a/OracleDatabase/RAC/OracleRealApplicationClusters/dockerfiles/21.3.0/setupGridEnv.sh b/OracleDatabase/RAC/OracleRealApplicationClusters/dockerfiles/21.3.0/setupGridEnv.sh index ca197fa9d6..26accc1899 100755 --- a/OracleDatabase/RAC/OracleRealApplicationClusters/dockerfiles/21.3.0/setupGridEnv.sh +++ b/OracleDatabase/RAC/OracleRealApplicationClusters/dockerfiles/21.3.0/setupGridEnv.sh @@ -194,22 +194,40 @@ fi ####################################### Set Resetting Failed Units ########################## resetFailedUnits() { -if [ "${RESET_FAILED_SYSTEMD}" != 'false' ]; then - - cp "$SCRIPT_DIR"/"$RESET_FAILED_UNITS" /var/tmp/$RESET_FAILED_UNITS - chmod 755 /var/tmp/$RESET_FAILED_UNITS - print_message "Setting Crontab" - # shellcheck disable=SC2016 - cmd='su - $GRID_USER -c "sudo crontab $SCRIPT_DIR/$SET_CRONTAB"' - - if eval "$cmd";then - print_message "Sucessfully installed $SET_CRONTAB using crontab" - else - error_exit "Error occurred in crontab setup" - fi - -fi + if [ "${RESET_FAILED_SYSTEMD}" != 'false' ]; then + # Define the service name + SERVICE_NAME="rhnsd" + + # Check if the service is running + if pgrep -x "$SERVICE_NAME" >/dev/null; then + print_message "$SERVICE_NAME is running." + + # Check if the service is responding + if ! systemctl is-active --quiet "$SERVICE_NAME"; then + print_message "$SERVICE_NAME is not responding. Stopping the service." + systemctl stop "$SERVICE_NAME" + systemctl disable "$SERVICE_NAME" + print_message "$SERVICE_NAME stopped." + else + print_message "$SERVICE_NAME is responsive. No action needed." + fi + else + print_message "$SERVICE_NAME is not running." + fi + + cp $SCRIPT_DIR/$RESET_FAILED_UNITS /var/tmp/$RESET_FAILED_UNITS + chmod 755 /var/tmp/$RESET_FAILED_UNITS + print_message "Setting Crontab" + cmd='su - $GRID_USER -c "sudo crontab $SCRIPT_DIR/$SET_CRONTAB"' + eval $cmd + + if [ $? -eq 0 ];then + print_message "Sucessfully installed $SET_CRONTAB using crontab" + else + error_exit "Error occurred in crontab setup" + fi + fi } @@ -324,6 +342,7 @@ fi print_message "Process id of the program : $TOP_ID" ##### start ntpd ####### startNTPD +resetFailedUnits pre_grid_deploy_steps checkHostName SetupEtcHosts diff --git a/OracleDatabase/RAC/OracleRealApplicationClusters/samples/installscenarios/docker/blockdevices/docker-compose-addition.yml b/OracleDatabase/RAC/OracleRealApplicationClusters/samples/installscenarios/docker/blockdevices/docker-compose-addition.yml new file mode 100644 index 0000000000..5ba6cea88a --- /dev/null +++ b/OracleDatabase/RAC/OracleRealApplicationClusters/samples/installscenarios/docker/blockdevices/docker-compose-addition.yml @@ -0,0 +1,73 @@ +--- +version: "3" +services: + racnode2: + container_name: ${RACNODE2_CONTAINER_NAME} + hostname: ${RACNODE2_HOST_NAME} + image: ${RACNODE_IMAGE_NAME} + restart: always + dns: ${DNS_PUBLIC_IP} + dns_search: ${DNS_DOMAIN} + volumes: + - /boot:/boot:ro + - /opt/.secrets:/run/secrets:ro + - /dev/shm + - /opt/containers/rac_host_file:/etc/hosts + - /sys/fs/cgroup:/sys/fs/cgroup:ro + tmpfs: + - /dev/shm:rw,exec,size=4G + - /run + privileged: false + environment: + DNS_SERVERS: ${DNS_PUBLIC_IP} + EXISTING_CLS_NODES: ${INSTALL_NODE} + NODE_VIP: ${RACNODE2_NODE_VIP} + VIP_HOSTNAME: ${RACNODE2_VIP_HOSTNAME} + PRIV_IP: ${RACNODE2_PRIV_IP} + PRIV_HOSTNAME: ${RACNODE2_PRIV_HOSTNAME} + OP_TYPE: ADDNODE + PUBLIC_IP: ${RACNODE2_PUBLIC_IP} + PUBLIC_HOSTNAME: ${RACNODE2_PUBLIC_HOSTNAME} + SCAN_NAME: ${SCAN_NAME} + DOMAIN: ${DNS_DOMAIN} + ASM_DEVICE_LIST: ${ASM_DEVICE_LIST} + ASM_DISCOVERY_DIR: ${ASM_DISCOVERY_DIR} + ORACLE_SID: ${ORACLE_DBNAME} + COMMON_OS_PWD_FILE: ${COMMON_OS_PWD_FILE} + PWD_KEY: ${PWD_KEY} + devices: + - "${ASM_DISK1}:${ASM_DEVICE1}" + - "${ASM_DISK2}:${ASM_DEVICE2}" + ulimits: + rtprio: 99 + cap_add: + - SYS_RESOURCE + - NET_ADMIN + - SYS_NICE + cpu_rt_runtime: 95000 + networks: + - rac_pub1_nw + - rac_priv1_nw + healthcheck: + test: ["CMD-SHELL", "if [ `cat /tmp/orod.log | grep -c 'ORACLE RAC DATABASE IS READY TO USE'` -ge 1 ]; then exit 0; else exit 1; fi"] + interval: ${HEALTHCHECK_INTERVAL} + timeout: ${HEALTHCHECK_TIMEOUT} + retries: ${HEALTHCHECK_RETRIES} +networks: + rac_pub1_nw: + name: ${PUBLIC_NETWORK_NAME} + driver: bridge + ipam: + driver: default + config: + - subnet: "${PUBLIC_NETWORK_SUBNET}" + rac_priv1_nw: + name: ${PRIVATE_NETWORK_NAME} + driver: bridge + ipam: + driver: default + config: + - subnet: "${PRIVATE_NETWORK_SUBNET}" +volumes: + racstorage: + external: true \ No newline at end of file diff --git a/OracleDatabase/RAC/OracleRealApplicationClusters/samples/installscenarios/docker/docker-compose.yml b/OracleDatabase/RAC/OracleRealApplicationClusters/samples/installscenarios/docker/blockdevices/docker-compose.yml similarity index 100% rename from OracleDatabase/RAC/OracleRealApplicationClusters/samples/installscenarios/docker/docker-compose.yml rename to OracleDatabase/RAC/OracleRealApplicationClusters/samples/installscenarios/docker/blockdevices/docker-compose.yml diff --git a/OracleDatabase/RAC/OracleRealApplicationClusters/samples/installscenarios/docker/nfsdevices/docker-compose-addition.yml b/OracleDatabase/RAC/OracleRealApplicationClusters/samples/installscenarios/docker/nfsdevices/docker-compose-addition.yml new file mode 100644 index 0000000000..93b93f3724 --- /dev/null +++ b/OracleDatabase/RAC/OracleRealApplicationClusters/samples/installscenarios/docker/nfsdevices/docker-compose-addition.yml @@ -0,0 +1,71 @@ +--- +version: "3" +services: + racnode2: + container_name: ${RACNODE2_CONTAINER_NAME} + hostname: ${RACNODE2_HOST_NAME} + image: ${RACNODE_IMAGE_NAME} + restart: always + dns: ${DNS_PUBLIC_IP} + dns_search: ${DNS_DOMAIN} + volumes: + - /boot:/boot:ro + - /opt/.secrets:/run/secrets:ro + - /dev/shm + - /opt/containers/rac_host_file:/etc/hosts + - /sys/fs/cgroup:/sys/fs/cgroup:ro + - racstorage:/oradata + tmpfs: + - /dev/shm:rw,exec,size=4G + - /run + privileged: false + environment: + DNS_SERVERS: ${DNS_PUBLIC_IP} + EXISTING_CLS_NODES: ${INSTALL_NODE} + NODE_VIP: ${RACNODE2_NODE_VIP} + VIP_HOSTNAME: ${RACNODE2_VIP_HOSTNAME} + PRIV_IP: ${RACNODE2_PRIV_IP} + PRIV_HOSTNAME: ${RACNODE2_PRIV_HOSTNAME} + OP_TYPE: ADDNODE + PUBLIC_IP: ${RACNODE2_PUBLIC_IP} + PUBLIC_HOSTNAME: ${RACNODE2_PUBLIC_HOSTNAME} + SCAN_NAME: ${SCAN_NAME} + DOMAIN: ${DNS_DOMAIN} + ASM_DEVICE_LIST: ${ASM_DEVICE_LIST} + ASM_DISCOVERY_DIR: ${ASM_DISCOVERY_DIR} + ORACLE_SID: ${ORACLE_DBNAME} + COMMON_OS_PWD_FILE: ${COMMON_OS_PWD_FILE} + PWD_KEY: ${PWD_KEY} + ulimits: + rtprio: 99 + cap_add: + - SYS_RESOURCE + - NET_ADMIN + - SYS_NICE + cpu_rt_runtime: 95000 + networks: + - rac_pub1_nw + - rac_priv1_nw + healthcheck: + test: ["CMD-SHELL", "if [ `cat /tmp/orod.log | grep -c 'ORACLE RAC DATABASE IS READY TO USE'` -ge 1 ]; then exit 0; else exit 1; fi"] + interval: ${HEALTHCHECK_INTERVAL} + timeout: ${HEALTHCHECK_TIMEOUT} + retries: ${HEALTHCHECK_RETRIES} +networks: + rac_pub1_nw: + name: ${PUBLIC_NETWORK_NAME} + driver: bridge + ipam: + driver: default + config: + - subnet: "${PUBLIC_NETWORK_SUBNET}" + rac_priv1_nw: + name: ${PRIVATE_NETWORK_NAME} + driver: bridge + ipam: + driver: default + config: + - subnet: "${PRIVATE_NETWORK_SUBNET}" +volumes: + racstorage: + external: true \ No newline at end of file diff --git a/OracleDatabase/RAC/OracleRealApplicationClusters/samples/installscenarios/docker/docker-compose-nfs.yml b/OracleDatabase/RAC/OracleRealApplicationClusters/samples/installscenarios/docker/nfsdevices/docker-compose.yml similarity index 97% rename from OracleDatabase/RAC/OracleRealApplicationClusters/samples/installscenarios/docker/docker-compose-nfs.yml rename to OracleDatabase/RAC/OracleRealApplicationClusters/samples/installscenarios/docker/nfsdevices/docker-compose.yml index ab4aa9be77..cedcd36210 100644 --- a/OracleDatabase/RAC/OracleRealApplicationClusters/samples/installscenarios/docker/docker-compose-nfs.yml +++ b/OracleDatabase/RAC/OracleRealApplicationClusters/samples/installscenarios/docker/nfsdevices/docker-compose.yml @@ -87,9 +87,6 @@ services: - SYS_RESOURCE - NET_ADMIN - SYS_NICE - devices: - - "${ASM_DISK1}:${ASM_DEVICE1}" - - "${ASM_DISK2}:${ASM_DEVICE2}" cpu_rt_runtime: 95000 networks: - rac_pub1_nw diff --git a/OracleDatabase/RAC/OracleRealApplicationClusters/samples/installscenarios/podman/blockdevices/podman-compose-addition.yml b/OracleDatabase/RAC/OracleRealApplicationClusters/samples/installscenarios/podman/blockdevices/podman-compose-addition.yml new file mode 100644 index 0000000000..9167f96e2d --- /dev/null +++ b/OracleDatabase/RAC/OracleRealApplicationClusters/samples/installscenarios/podman/blockdevices/podman-compose-addition.yml @@ -0,0 +1,64 @@ +--- +version: '3' +services: + racnode2: + container_name: ${RACNODE2_CONTAINER_NAME} + hostname: ${RACNODE2_HOST_NAME} + image: ${RACNODE_IMAGE_NAME} + restart: always + dns: ${DNS_PUBLIC_IP} + dns_search: ${DNS_DOMAIN} + volumes: + - /boot:/boot:ro + - /opt/.secrets:/run/secrets:ro + - /dev/shm + - /opt/containers/rac_host_file:/etc/hosts + - /sys/fs/cgroup:/sys/fs/cgroup:ro + tmpfs: + - /dev/shm:rw,exec,size=4G + - /run + privileged: false + environment: + DNS_SERVERS: ${DNS_PUBLIC_IP} + EXISTING_CLS_NODES: ${INSTALL_NODE} + NODE_VIP: ${RACNODE2_NODE_VIP} + VIP_HOSTNAME: ${RACNODE2_VIP_HOSTNAME} + PRIV_IP: ${RACNODE2_PRIV_IP} + PRIV_HOSTNAME: ${RACNODE2_PRIV_HOSTNAME} + OP_TYPE: ADDNODE + PUBLIC_IP: ${RACNODE2_PUBLIC_IP} + PUBLIC_HOSTNAME: ${RACNODE2_PUBLIC_HOSTNAME} + SCAN_NAME: ${SCAN_NAME} + DOMAIN: ${DNS_DOMAIN} + ASM_DEVICE_LIST: ${ASM_DEVICE_LIST} + ASM_DISCOVERY_DIR: ${ASM_DISCOVERY_DIR} + COMMON_OS_PWD_FILE: ${COMMON_OS_PWD_FILE} + PWD_KEY: ${PWD_KEY} + ORACLE_SID: ${ORACLE_SID} + RESET_FAILED_SYSTEMD: "true" + DEFAULT_GATEWAY: ${DEFAULT_GATEWAY} + TMPDIR: /var/tmp + ulimits: + rtprio: 99 + cap_add: + - SYS_RESOURCE + - NET_ADMIN + - SYS_NICE + - AUDIT_WRITE + - AUDIT_CONTROL + sysctls: + - kernel.shmall=2097152 + - kernel.shmmax=8589934592 + - kernel.shmmni=4096 + - 'kernel.sem=250 32000 100 128' + devices: + - "${ASM_DISK1}:${ASM_DEVICE1}" + - "${ASM_DISK2}:${ASM_DEVICE2}" + networks: + - rac_pub1_nw + - rac_priv1_nw + healthcheck: + test: ["CMD-SHELL", "if [ `cat /tmp/orod.log | grep -c 'ORACLE RAC DATABASE IS READY TO USE'` -ge 1 ]; then exit 0; else exit 1; fi"] + interval: ${HEALTHCHECK_INTERVAL} + timeout: ${HEALTHCHECK_TIMEOUT} + retries: ${HEALTHCHECK_RETRIES} \ No newline at end of file diff --git a/OracleDatabase/RAC/OracleRealApplicationClusters/samples/installscenarios/podman/blockdevices/podman-compose.yml b/OracleDatabase/RAC/OracleRealApplicationClusters/samples/installscenarios/podman/blockdevices/podman-compose.yml new file mode 100644 index 0000000000..1978a3acb5 --- /dev/null +++ b/OracleDatabase/RAC/OracleRealApplicationClusters/samples/installscenarios/podman/blockdevices/podman-compose.yml @@ -0,0 +1,128 @@ +--- +version: '3' +services: + racdns: + container_name: ${DNS_CONTAINER_NAME} + hostname: ${DNS_HOST_NAME} + image: ${DNS_IMAGE_NAME} + dns_search: ${DNS_DOMAIN} + environment: + SETUP_DNS_CONFIG_FILES: "setup_true" + DOMAIN_NAME: ${DNS_DOMAIN} + RAC_NODE_NAME_PREFIX: ${RAC_NODE_NAME_PREFIX} + sysctls: + - net.ipv6.conf.all.disable_ipv6=1 + cap_add: + - SYS_ADMIN + healthcheck: + test: ["CMD-SHELL", "if [ `cat /tmp/orod.log | grep -c 'DNS Server IS READY TO USE'` -ge 1 ]; then exit 0; else exit 1; fi"] + interval: ${HEALTHCHECK_INTERVAL} + timeout: ${HEALTHCHECK_TIMEOUT} + retries: ${HEALTHCHECK_RETRIES} + networks: + rac_pub1_nw: + ipv4_address: ${DNS_PUBLIC_IP} + racnode1: + container_name: ${RACNODE1_CONTAINER_NAME} + hostname: ${RACNODE1_HOST_NAME} + image: ${RACNODE_IMAGE_NAME} + restart: always + dns: ${DNS_PUBLIC_IP} + dns_search: ${DNS_DOMAIN} + volumes: + - /boot:/boot:ro + - /opt/.secrets:/run/secrets:ro + - /dev/shm + - /opt/containers/rac_host_file:/etc/hosts + - /sys/fs/cgroup:/sys/fs/cgroup:ro + tmpfs: + - /dev/shm:rw,exec,size=4G + - /run + privileged: false + environment: + DNS_SERVERS: ${DNS_PUBLIC_IP} + NODE_VIP: ${RACNODE1_NODE_VIP} + VIP_HOSTNAME: ${RACNODE1_VIP_HOSTNAME} + PRIV_IP: ${RACNODE1_PRIV_IP} + PRIV_HOSTNAME: ${RACNODE1_PRIV_HOSTNAME} + OP_TYPE: INSTALL + PUBLIC_IP: ${RACNODE1_PUBLIC_IP} + PUBLIC_HOSTNAME: ${RACNODE1_PUBLIC_HOSTNAME} + SCAN_NAME: ${SCAN_NAME} + DOMAIN: ${DNS_DOMAIN} + ASM_DEVICE_LIST: ${ASM_DEVICE_LIST} + ASM_DISCOVERY_DIR: ${ASM_DISCOVERY_DIR} + CMAN_HOSTNAME: ${CMAN_HOSTNAME} + CMAN_IP: ${CMAN_IP} + COMMON_OS_PWD_FILE: ${COMMON_OS_PWD_FILE} + PWD_KEY: ${PWD_KEY} + ORACLE_SID: ${ORACLE_SID} + RESET_FAILED_SYSTEMD: "true" + DEFAULT_GATEWAY: ${DEFAULT_GATEWAY} + TMPDIR: /var/tmp + ulimits: + rtprio: 99 + cap_add: + - SYS_RESOURCE + - NET_ADMIN + - SYS_NICE + - AUDIT_WRITE + - AUDIT_CONTROL + sysctls: + - kernel.shmall=2097152 + - kernel.shmmax=8589934592 + - kernel.shmmni=4096 + - 'kernel.sem=250 32000 100 128' + devices: + - "${ASM_DISK1}:${ASM_DEVICE1}" + - "${ASM_DISK2}:${ASM_DEVICE2}" + networks: + - rac_pub1_nw + - rac_priv1_nw + healthcheck: + test: ["CMD-SHELL", "if [ `cat /tmp/orod.log | grep -c 'ORACLE RAC DATABASE IS READY TO USE'` -ge 1 ]; then exit 0; else exit 1; fi"] + interval: ${HEALTHCHECK_INTERVAL} + timeout: ${HEALTHCHECK_TIMEOUT} + retries: ${HEALTHCHECK_RETRIES} + racnode-cman: + depends_on: + racdns: + condition: service_healthy + racnode1: + condition: service_healthy + container_name: ${CMAN_CONTAINER_NAME} + hostname: ${CMAN_HOST_NAME} + image: ${CMAN_IMAGE_NAME} + dns_search: ${DNS_DOMAIN} + environment: + DOMAIN_NAME: ${DNS_DOMAIN} + PUBLIC_HOSTNAME: ${CMAN_PUBLIC_HOSTNAME} + SCAN_NAME: ${SCAN_NAME} + SCAN_IP: ${SCAN_IP} + PUBLIC_IP: ${CMAN_PUBLIC_IP} + privileged: false + ports: + - 1521:1521 + networks: + rac_pub1_nw: + ipv4_address: ${CMAN_PUBLIC_IP} + healthcheck: + test: ["CMD-SHELL", "if [ `cat /tmp/orod.log | grep -c 'CONNECTION MANAGER IS READY TO USE'` -ge 1 ]; then exit 0; else exit 1; fi"] + interval: ${HEALTHCHECK_INTERVAL} + timeout: ${HEALTHCHECK_TIMEOUT} + retries: ${HEALTHCHECK_RETRIES} +networks: + rac_pub1_nw: + name: ${PUBLIC_NETWORK_NAME} + driver: bridge + ipam: + driver: default + config: + - subnet: "${PUBLIC_NETWORK_SUBNET}" + rac_priv1_nw: + name: ${PRIVATE_NETWORK_NAME} + driver: bridge + ipam: + driver: default + config: + - subnet: "${PRIVATE_NETWORK_SUBNET}" \ No newline at end of file From cf469f93af25fab84c652ff724ca5866fc87b47c Mon Sep 17 00:00:00 2001 From: Saurabh Ahuja Date: Sun, 21 Jan 2024 09:38:43 +0000 Subject: [PATCH 3/9] rhnsd changes alongwith compose files --- .../dockerfiles/19.3.0/setupGridEnv.sh | 1 + .../dockerfiles/21.3.0/setupGridEnv.sh | 1 + 2 files changed, 2 insertions(+) diff --git a/OracleDatabase/RAC/OracleRealApplicationClusters/dockerfiles/19.3.0/setupGridEnv.sh b/OracleDatabase/RAC/OracleRealApplicationClusters/dockerfiles/19.3.0/setupGridEnv.sh index 0f8b69d20d..eb0f895855 100644 --- a/OracleDatabase/RAC/OracleRealApplicationClusters/dockerfiles/19.3.0/setupGridEnv.sh +++ b/OracleDatabase/RAC/OracleRealApplicationClusters/dockerfiles/19.3.0/setupGridEnv.sh @@ -216,6 +216,7 @@ resetFailedUnits() cp $SCRIPT_DIR/$RESET_FAILED_UNITS /var/tmp/$RESET_FAILED_UNITS chmod 755 /var/tmp/$RESET_FAILED_UNITS print_message "Setting Crontab" + # shellcheck disable=SC2016 cmd='su - $GRID_USER -c "sudo crontab $SCRIPT_DIR/$SET_CRONTAB"' eval $cmd diff --git a/OracleDatabase/RAC/OracleRealApplicationClusters/dockerfiles/21.3.0/setupGridEnv.sh b/OracleDatabase/RAC/OracleRealApplicationClusters/dockerfiles/21.3.0/setupGridEnv.sh index 26accc1899..23c66dd719 100755 --- a/OracleDatabase/RAC/OracleRealApplicationClusters/dockerfiles/21.3.0/setupGridEnv.sh +++ b/OracleDatabase/RAC/OracleRealApplicationClusters/dockerfiles/21.3.0/setupGridEnv.sh @@ -218,6 +218,7 @@ resetFailedUnits() cp $SCRIPT_DIR/$RESET_FAILED_UNITS /var/tmp/$RESET_FAILED_UNITS chmod 755 /var/tmp/$RESET_FAILED_UNITS print_message "Setting Crontab" + # shellcheck disable=SC2016 cmd='su - $GRID_USER -c "sudo crontab $SCRIPT_DIR/$SET_CRONTAB"' eval $cmd From 28ef3fcaae07050f9ebc543d936b703b9d4a013b Mon Sep 17 00:00:00 2001 From: Saurabh Ahuja Date: Sun, 21 Jan 2024 11:54:09 +0000 Subject: [PATCH 4/9] with reset failed units fixes --- .../docker/blockdevices/docker-compose-addition.yml | 6 ++---- .../installscenarios/docker/blockdevices/docker-compose.yml | 1 + .../docker/nfsdevices/docker-compose-addition.yml | 1 + .../installscenarios/docker/nfsdevices/docker-compose.yml | 3 ++- 4 files changed, 6 insertions(+), 5 deletions(-) diff --git a/OracleDatabase/RAC/OracleRealApplicationClusters/samples/installscenarios/docker/blockdevices/docker-compose-addition.yml b/OracleDatabase/RAC/OracleRealApplicationClusters/samples/installscenarios/docker/blockdevices/docker-compose-addition.yml index 5ba6cea88a..5090effcd8 100644 --- a/OracleDatabase/RAC/OracleRealApplicationClusters/samples/installscenarios/docker/blockdevices/docker-compose-addition.yml +++ b/OracleDatabase/RAC/OracleRealApplicationClusters/samples/installscenarios/docker/blockdevices/docker-compose-addition.yml @@ -35,6 +35,7 @@ services: ORACLE_SID: ${ORACLE_DBNAME} COMMON_OS_PWD_FILE: ${COMMON_OS_PWD_FILE} PWD_KEY: ${PWD_KEY} + RESET_FAILED_SYSTEMD: "true" devices: - "${ASM_DISK1}:${ASM_DEVICE1}" - "${ASM_DISK2}:${ASM_DEVICE2}" @@ -67,7 +68,4 @@ networks: ipam: driver: default config: - - subnet: "${PRIVATE_NETWORK_SUBNET}" -volumes: - racstorage: - external: true \ No newline at end of file + - subnet: "${PRIVATE_NETWORK_SUBNET}" \ No newline at end of file diff --git a/OracleDatabase/RAC/OracleRealApplicationClusters/samples/installscenarios/docker/blockdevices/docker-compose.yml b/OracleDatabase/RAC/OracleRealApplicationClusters/samples/installscenarios/docker/blockdevices/docker-compose.yml index 264b90dba2..df1ad2753c 100644 --- a/OracleDatabase/RAC/OracleRealApplicationClusters/samples/installscenarios/docker/blockdevices/docker-compose.yml +++ b/OracleDatabase/RAC/OracleRealApplicationClusters/samples/installscenarios/docker/blockdevices/docker-compose.yml @@ -59,6 +59,7 @@ services: CMAN_IP: ${CMAN_IP} COMMON_OS_PWD_FILE: ${COMMON_OS_PWD_FILE} PWD_KEY: ${PWD_KEY} + RESET_FAILED_SYSTEMD: "true" ulimits: rtprio: 99 cap_add: diff --git a/OracleDatabase/RAC/OracleRealApplicationClusters/samples/installscenarios/docker/nfsdevices/docker-compose-addition.yml b/OracleDatabase/RAC/OracleRealApplicationClusters/samples/installscenarios/docker/nfsdevices/docker-compose-addition.yml index 93b93f3724..dbed12aea3 100644 --- a/OracleDatabase/RAC/OracleRealApplicationClusters/samples/installscenarios/docker/nfsdevices/docker-compose-addition.yml +++ b/OracleDatabase/RAC/OracleRealApplicationClusters/samples/installscenarios/docker/nfsdevices/docker-compose-addition.yml @@ -36,6 +36,7 @@ services: ORACLE_SID: ${ORACLE_DBNAME} COMMON_OS_PWD_FILE: ${COMMON_OS_PWD_FILE} PWD_KEY: ${PWD_KEY} + RESET_FAILED_SYSTEMD: "true" ulimits: rtprio: 99 cap_add: diff --git a/OracleDatabase/RAC/OracleRealApplicationClusters/samples/installscenarios/docker/nfsdevices/docker-compose.yml b/OracleDatabase/RAC/OracleRealApplicationClusters/samples/installscenarios/docker/nfsdevices/docker-compose.yml index cedcd36210..e2443fd3a3 100644 --- a/OracleDatabase/RAC/OracleRealApplicationClusters/samples/installscenarios/docker/nfsdevices/docker-compose.yml +++ b/OracleDatabase/RAC/OracleRealApplicationClusters/samples/installscenarios/docker/nfsdevices/docker-compose.yml @@ -49,7 +49,7 @@ services: condition: service_healthy container_name: ${RACNODE1_CONTAINER_NAME} hostname: ${RACNODE1_HOST_NAME} - image: ${RACNODE1_IMAGE_NAME} + image: ${RACNODE_IMAGE_NAME} restart: always dns: ${DNS_PUBLIC_IP} dns_search: ${DNS_DOMAIN} @@ -81,6 +81,7 @@ services: CMAN_IP: ${CMAN_IP} COMMON_OS_PWD_FILE: ${COMMON_OS_PWD_FILE} PWD_KEY: ${PWD_KEY} + RESET_FAILED_SYSTEMD: "true" ulimits: rtprio: 99 cap_add: From 6af9cd2e680ec7a42838490d3c38c28748222c4a Mon Sep 17 00:00:00 2001 From: Saurabh Ahuja Date: Sun, 21 Jan 2024 11:56:20 +0000 Subject: [PATCH 5/9] shellcheck fixes --- .../dockerfiles/19.3.0/setupGridEnv.sh | 4 +++- .../dockerfiles/21.3.0/setupGridEnv.sh | 5 +++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/OracleDatabase/RAC/OracleRealApplicationClusters/dockerfiles/19.3.0/setupGridEnv.sh b/OracleDatabase/RAC/OracleRealApplicationClusters/dockerfiles/19.3.0/setupGridEnv.sh index eb0f895855..8409d2cc1a 100644 --- a/OracleDatabase/RAC/OracleRealApplicationClusters/dockerfiles/19.3.0/setupGridEnv.sh +++ b/OracleDatabase/RAC/OracleRealApplicationClusters/dockerfiles/19.3.0/setupGridEnv.sh @@ -213,13 +213,15 @@ resetFailedUnits() print_message "$SERVICE_NAME is not running." fi + # shellcheck disable=SC2086 cp $SCRIPT_DIR/$RESET_FAILED_UNITS /var/tmp/$RESET_FAILED_UNITS chmod 755 /var/tmp/$RESET_FAILED_UNITS print_message "Setting Crontab" # shellcheck disable=SC2016 cmd='su - $GRID_USER -c "sudo crontab $SCRIPT_DIR/$SET_CRONTAB"' + # shellcheck disable=SC2086 eval $cmd - + # shellcheck disable=SC2181 if [ $? -eq 0 ];then print_message "Sucessfully installed $SET_CRONTAB using crontab" else diff --git a/OracleDatabase/RAC/OracleRealApplicationClusters/dockerfiles/21.3.0/setupGridEnv.sh b/OracleDatabase/RAC/OracleRealApplicationClusters/dockerfiles/21.3.0/setupGridEnv.sh index 23c66dd719..621f176e5d 100755 --- a/OracleDatabase/RAC/OracleRealApplicationClusters/dockerfiles/21.3.0/setupGridEnv.sh +++ b/OracleDatabase/RAC/OracleRealApplicationClusters/dockerfiles/21.3.0/setupGridEnv.sh @@ -214,14 +214,15 @@ resetFailedUnits() else print_message "$SERVICE_NAME is not running." fi - + # shellcheck disable=SC2086 cp $SCRIPT_DIR/$RESET_FAILED_UNITS /var/tmp/$RESET_FAILED_UNITS chmod 755 /var/tmp/$RESET_FAILED_UNITS print_message "Setting Crontab" # shellcheck disable=SC2016 cmd='su - $GRID_USER -c "sudo crontab $SCRIPT_DIR/$SET_CRONTAB"' + # shellcheck disable=SC2086 eval $cmd - + # shellcheck disable=SC2181 if [ $? -eq 0 ];then print_message "Sucessfully installed $SET_CRONTAB using crontab" else From ebfb8c186f45b92457623601d2e3de2154cb975e Mon Sep 17 00:00:00 2001 From: Saurabh Ahuja Date: Sun, 21 Jan 2024 15:00:25 +0000 Subject: [PATCH 6/9] README instructions updated with RAC setup with Docker compose --- .../OracleRealApplicationClusters/README.md | 334 ++++++++++++++++++ 1 file changed, 334 insertions(+) diff --git a/OracleDatabase/RAC/OracleRealApplicationClusters/README.md b/OracleDatabase/RAC/OracleRealApplicationClusters/README.md index 1384dc7317..004f46bb10 100644 --- a/OracleDatabase/RAC/OracleRealApplicationClusters/README.md +++ b/OracleDatabase/RAC/OracleRealApplicationClusters/README.md @@ -36,6 +36,12 @@ To create an Oracle RAC environment, complete these steps in order: - [Assign Network to additional Oracle RAC container](#assign-network-to-additional-oracle-rac-container) - [Start Oracle RAC racnode2 container](#start-oracle-rac-racnode2-container) - [Connect to the Oracle RAC racnode2 container](#connect-to-the-oracle-rac-racnode2-container) + - [Section 4.4: Setup Oracle RAC Container on Docker with Docker Compose](#section-44-setup-oracle-rac-container-on-docker-with-docker-compose) + - [Deploying Oracle RAC on Container with Block Devices on Docker with Docker Compose](#deploying-oracle-rac-on-container-with-block-devices-on-docker-with-docker-compose) + - [Deploying Oracle RAC on Container With Oracle RAC Storage Container with Docker Compose](#deploying-oracle-rac-on-container-with-oracle-rac-storage-container-with-docker-compose) + - [Section 4.5: Adding Oracle RAC Container on Docker with Docker Compose](#section-45-adding-oracle-rac-container-on-docker-with-docker-compose) + - [Deploying Oracle RAC Additional Node on Container with Block Devices on Docker with Docker Compose](#deploying-oracle-rac-additional-node-on-container-with-block-devices-on-docker-with-docker-compose) + - [Deploying Oracle RAC Additional Node on Container with Oracle RAC Storage Container on Docker with Docker Compose](#deploying-oracle-rac-additional-node-on-container-with-oracle-rac-storage-container-on-docker-with-docker-compose) - [Section 5: Oracle RAC on Podman](#section-5-oracle-rac-on-podman) - [Section 5.1 : Prerequisites for Running Oracle RAC on Podman](#section-51--prerequisites-for-running-oracle-rac-on-podman) - [Section 5.2: Setup RAC Containers on Podman](#section-52-setup-rac-containers-on-podman) @@ -578,6 +584,334 @@ To connect to the container execute the following command: If the node addition fails, log in to the container using the preceding command and review `/tmp/orod.log`. You can also review the Grid Infrastructure logs i.e. `$GRID_BASE/diag/crs` and check for failure logs. If the node creation has failed during the database creation process, then check DB logs. +## Section 4.4: Setup Oracle RAC Container on Docker with Docker Compose +In order to setup RAC on Docker with Docker Compose, latest `docker compose` binary is required from [respective website](https://github.com/docker/compose/releases). This is example of how to install `docker compose` executable v2.23.1 from github- +```bash +DOCKER_CONFIG=${DOCKER_CONFIG:-$HOME/.docker} +mkdir -p $DOCKER_CONFIG/cli-plugins +ls -lrt $DOCKER_CONFIG/cli-plugins +curl -SL https://github.com/docker/compose/releases/download/v2.23.1/docker-compose-linux-x86_64 -o $DOCKER_CONFIG/cli-plugins/docker-compose +ls -lrt $DOCKER_CONFIG/cli-plugins +chmod +x $DOCKER_CONFIG/cli-plugins/docker-compose +``` +### Deploying Oracle RAC on Container with Block Devices on Docker with Docker Compose + +In order to setup Oracle RAC on Docker with Block Devices with Docker Compose, first lets identify necessary variables to export that will be used by `docker-compose.yml` file later. Below is one example of exporting necessary variables related to docker network, DNS container, RAC Container and CMAN container discussed in this repo. +```bash +export HEALTHCHECK_INTERVAL=30s +export HEALTHCHECK_TIMEOUT=3s +export HEALTHCHECK_RETRIES=240 +export DNS_CONTAINER_NAME=racdns +export DNS_HOST_NAME=rac-dns +export DNS_IMAGE_NAME="oracle/rac-dnsserver:latest" +export DNS_DOMAIN="example.com" +export RAC_NODE_NAME_PREFIX="racnode" +export PUBLIC_NETWORK_NAME="rac_pub1_nw" +export PUBLIC_NETWORK_SUBNET="172.16.1.0/24" +export PRIVATE_NETWORK_NAME="rac_pzriv1_nw" +export PRIVATE_NETWORK_SUBNET="192.168.17.0/24" +export DNS_PUBLIC_IP=172.16.1.25 +export INSTALL_NODE=racnode1 +export SCAN_NAME="racnode-scan" +export SCAN_IP=172.16.1.70 +export ASM_DISCOVERY_DIR="/dev/" +export PWD_KEY="pwd.key" +export ASM_DISK1="/dev/oracleoci/oraclevdd" +export ASM_DISK2="/dev/oracleoci/oraclevde" +export ASM_DEVICE1="/dev/asm-disk1" +export ASM_DEVICE2="/dev/asm-disk2" +export ASM_DEVICE_LIST="${ASM_DEVICE1},${ASM_DEVICE2}" +export CMAN_HOSTNAME="racnode-cman1" +export CMAN_IP=172.16.1.15 +export COMMON_OS_PWD_FILE="common_os_pwdfile.enc" +export PWD_KEY="pwd.key" +export RACNODE1_CONTAINER_NAME=racnode1 +export RACNODE1_HOST_NAME=racnode1 +export RACNODE_IMAGE_NAME="oracle/database-rac:19.3.0" +export RACNODE1_NODE_VIP=172.16.1.160 +export RACNODE1_VIP_HOSTNAME="racnode1-vip" +export RACNODE1_PRIV_IP=192.168.17.150 +export RACNODE1_PRIV_HOSTNAME="racnode1-priv" +export RACNODE1_PUBLIC_IP=172.16.1.150 +export RACNODE1_PUBLIC_HOSTNAME="racnode1" +export CMAN_CONTAINER_NAME=racnode-cman +export CMAN_HOST_NAME=racnode-cman1 +export CMAN_IMAGE_NAME="oracle/client-cman:19.3.0" +export DNS_DOMAIN="example.com" +export CMAN_PUBLIC_IP=172.16.1.15 +export CMAN_PUBLIC_NETWORK_NAME="rac_pub1_nw" +export CMAN_PUBLIC_HOSTNAME="racnode-cman1" +``` +Once necessary variables are exported, copy `docker-compose.yml` file from [this location](./samples/installscenarios/docker/blockdevices/) + +After copying compose file, you can bring up DNS Container, RAC Container and CMAN container by following below commands- +```bash +#---------Bring up DNS------------ +docker compose up -d racdns + +docker compose logs racdns +racdns | 01-21-2024 08:46:31 UTC : : DNS Server started sucessfully +racdns | 01-21-2024 08:46:31 UTC : : ################################################ +racdns | 01-21-2024 08:46:31 UTC : : DNS Server IS READY TO USE! +racdns | 01-21-2024 08:46:31 UTC : : ################################################ +racdns | 01-21-2024 08:46:31 UTC : : DNS Server Started Successfully +``` + +```bash +#-----Bring up racnode1---------- +docker compose up -d ${RACNODE1_CONTAINER_NAME} +docker compose stop ${RACNODE1_CONTAINER_NAME} +docker network disconnect ${PUBLIC_NETWORK_NAME} ${RACNODE1_CONTAINER_NAME} +docker network disconnect ${PRIVATE_NETWORK_NAME} ${RACNODE1_CONTAINER_NAME} +docker network connect ${PUBLIC_NETWORK_NAME} --ip ${RACNODE1_PUBLIC_IP} ${RACNODE1_CONTAINER_NAME} +docker network connect ${PRIVATE_NETWORK_NAME} --ip ${RACNODE1_PRIV_IP} ${RACNODE1_CONTAINER_NAME} +docker compose start ${RACNODE1_CONTAINER_NAME} + +docker compose logs -f ${RACNODE1_CONTAINER_NAME} +racnode1 | 01-19-2024 16:34:24 UTC : : #################################### +racnode1 | 01-19-2024 16:34:24 UTC : : ORACLE RAC DATABASE IS READY TO USE! +racnode1 | 01-19-2024 16:34:24 UTC : : #################################### +``` + +```bash +#-----Bring up CMAN---------- +docker compose up -d ${CMAN_CONTAINER_NAME} + +docker compose logs -f ${CMAN_CONTAINER_NAME} +cnode-cman | 01-19-2024 16:35:33 UTC : : ################################################ +racnode-cman | 01-19-2024 16:35:33 UTC : : CONNECTION MANAGER IS READY TO USE! +racnode-cman | 01-19-2024 16:35:33 UTC : : ################################################ +racnode-cman | 01-19-2024 16:35:33 UTC : : cman started sucessfully +``` + +Note: Docker compose currently doesn't supports assigning multiple network IP address via compose file. Due to this limitation, above commands are specificically assigning required public and private networks to RAC container while stopping it in between. Also, above example is specific to bridge networks. In case, of MCVLAN or IPVLAN networks, you may want to edit `docker-compose.yml` file are per your needs and respective environment variables. + +### Deploying Oracle RAC on Container With Oracle RAC Storage Container with Docker Compose +In order to setup Oracle RAC on Docker with Oracle RAC Storage Container with Docker Compose, lets first make sure `nfs-utils` rpm package is installed in Docker Host machine. +```bash +yum -y install nfs-utils +``` + +Lets identify necessary variables to export that will be used by `docker-compose.yml` file later. Below is one example of exporting necessary variables related to docker network, DNS container, Storage Container, RAC Container and CMAN container discussed in this repo. +```bash +export HEALTHCHECK_INTERVAL=30s +export HEALTHCHECK_TIMEOUT=3s +export HEALTHCHECK_RETRIES=240 +export DNS_CONTAINER_NAME=racdns +export DNS_HOST_NAME=rac-dns +export DNS_IMAGE_NAME="oracle/rac-dnsserver:latest" +export DNS_DOMAIN="example.com" +export RAC_NODE_NAME_PREFIX="racnode" +export PUBLIC_NETWORK_NAME="rac_pub1_nw" +export PUBLIC_NETWORK_SUBNET="172.16.1.0/24" +export PRIVATE_NETWORK_NAME="rac_pzriv1_nw" +export PRIVATE_NETWORK_SUBNET="192.168.17.0/24" +export DNS_PUBLIC_IP=172.16.1.25 +export INSTALL_NODE=racnode1 +export SCAN_NAME="racnode-scan" +export SCAN_IP=172.16.1.70 +export ASM_DISCOVERY_DIR="/oradata" +export ASM_DEVICE_LIST="/oradata/asm_disk01.img,/oradata/asm_disk02.img,/oradata/asm_disk03.img,/oradata/asm_disk04.img,/oradata/asm_disk05.img" +export CMAN_HOSTNAME="racnode-cman1" +export CMAN_IP=172.16.1.15 +export COMMON_OS_PWD_FILE="common_os_pwdfile.enc" +export PWD_KEY="pwd.key" +export RACNODE1_CONTAINER_NAME=racnode1 +export RACNODE1_HOST_NAME=racnode1 +export RACNODE_IMAGE_NAME="oracle/database-rac:19.3.0" +export RACNODE1_NODE_VIP=172.16.1.160 +export RACNODE1_VIP_HOSTNAME="racnode1-vip" +export RACNODE1_PRIV_IP=192.168.17.150 +export RACNODE1_PRIV_HOSTNAME="racnode1-priv" +export RACNODE1_PUBLIC_IP=172.16.1.150 +export RACNODE1_PUBLIC_HOSTNAME="racnode1" +export CMAN_CONTAINER_NAME=racnode-cman +export CMAN_HOST_NAME=racnode-cman1 +export CMAN_IMAGE_NAME="oracle/client-cman:19.3.0" +export DNS_DOMAIN="example.com" +export CMAN_PUBLIC_IP=172.16.1.15 +export CMAN_PUBLIC_NETWORK_NAME="rac_pub1_nw" +export CMAN_PUBLIC_HOSTNAME="racnode-cman1" +export STORAGE_CONTAINER_NAME="racnode-storage" +export STORAGE_HOST_NAME="racnode-storage" +export STORAGE_IMAGE_NAME="oracle/rac-storage-server:19.3.0" +export ORACLE_DBNAME="ORCLCDB" +export STORAGE_PRIVATE_IP=192.168.17.25 +export NFS_STORAGE_VOLUME="/scratch/docker_volumes/asm_vol/$ORACLE_DBNAME" +``` +Once necessary variables are exported, copy `docker-compose.yml` file from [this location](./samples/installscenarios/docker/nfsdevices/) + +After copying compose file, you can bring up DNS Container, Storage Container, RAC Container and CMAN container by following below commands- +```bash +#---------Bring up DNS------------ +docker compose up -d racdns + +docker compose logs racdns +racdns | 01-21-2024 08:46:31 UTC : : DNS Server started sucessfully +racdns | 01-21-2024 08:46:31 UTC : : ################################################ +racdns | 01-21-2024 08:46:31 UTC : : DNS Server IS READY TO USE! +racdns | 01-21-2024 08:46:31 UTC : : ################################################ +racdns | 01-21-2024 08:46:31 UTC : : DNS Server Started Successfully +``` + +```bash +#----- Bring up Storage Container----- +docker compose up -d racnode-storage + +docker compose logs -f racnode-storage +racnode-storage | #################################################### +racnode-storage | NFS Server is up and running +racnode-storage | Create NFS volume for /oradata/ +racnode-storage | #################################################### +``` + +```bash +#-----Create docker volume--- +docker volume create --driver local \ + --opt type=nfs \ + --opt o=addr=192.168.17.25,rw,bg,hard,tcp,vers=3,timeo=600,rsize=32768,wsize=32768,actimeo=0 \ + --opt device=192.168.17.25:/oradata \ + racstorage +``` + +```bash +#-----Bring up racnode1---------- +docker compose up -d ${RACNODE1_CONTAINER_NAME} +docker compose stop ${RACNODE1_CONTAINER_NAME} +docker network disconnect ${PUBLIC_NETWORK_NAME} ${RACNODE1_CONTAINER_NAME} +docker network disconnect ${PRIVATE_NETWORK_NAME} ${RACNODE1_CONTAINER_NAME} +docker network connect ${PUBLIC_NETWORK_NAME} --ip ${RACNODE1_PUBLIC_IP} ${RACNODE1_CONTAINER_NAME} +docker network connect ${PRIVATE_NETWORK_NAME} --ip ${RACNODE1_PRIV_IP} ${RACNODE1_CONTAINER_NAME} +docker compose start ${RACNODE1_CONTAINER_NAME} + +docker compose logs -f ${RACNODE1_CONTAINER_NAME} +racnode1 | 01-19-2024 16:34:24 UTC : : #################################### +racnode1 | 01-19-2024 16:34:24 UTC : : ORACLE RAC DATABASE IS READY TO USE! +racnode1 | 01-19-2024 16:34:24 UTC : : #################################### +``` + +```bash +#-----Bring up CMAN---------- +docker compose up -d ${CMAN_CONTAINER_NAME} + +docker compose logs -f ${CMAN_CONTAINER_NAME} +cnode-cman | 01-19-2024 16:35:33 UTC : : ################################################ +racnode-cman | 01-19-2024 16:35:33 UTC : : CONNECTION MANAGER IS READY TO USE! +racnode-cman | 01-19-2024 16:35:33 UTC : : ################################################ +racnode-cman | 01-19-2024 16:35:33 UTC : : cman started sucessfully +``` + +Note: Docker compose currently doesn't supports assigning multiple network IP address via compose file. Due to this limitation, above commands are specificically assigning required public and private networks to RAC container while stopping it in between. Also, above example is specific to bridge networks. In case, of MCVLAN or IPVLAN networks, you may want to edit `docker-compose.yml` file are per your needs and respective environment variables. + +## Section 4.5: Adding Oracle RAC Container on Docker with Docker Compose +### Deploying Oracle RAC Additional Node on Container with Block Devices on Docker with Docker Compose +In order to add additional node in existing Oracle RAC on Docker with Block Devices with Docker Compose, first lets identify necessary variables to export that will be used by `docker-compose.yml` file later. Below is one example of exporting necessary variables related to additional RAC Container with Block Devices. +```bash +export HEALTHCHECK_INTERVAL=30s +export HEALTHCHECK_TIMEOUT=3s +export HEALTHCHECK_RETRIES=240 +export DNS_HOST_NAME=rac-dns +export DNS_IMAGE_NAME="oracle/rac-dnsserver:latest" +export DNS_DOMAIN="example.com" +export PUBLIC_NETWORK_NAME="rac_pub1_nw" +export PUBLIC_NETWORK_SUBNET="172.16.1.0/24" +export PRIVATE_NETWORK_NAME="rac_pzriv1_nw" +export PRIVATE_NETWORK_SUBNET="192.168.17.0/24" +export DNS_PUBLIC_IP=172.16.1.25 +export INSTALL_NODE=racnode1 +export SCAN_NAME="racnode-scan" +export SCAN_IP=172.16.1.70 +export ASM_DISCOVERY_DIR="/dev/" +export ASM_DISK1="/dev/oracleoci/oraclevdd" +export ASM_DISK2="/dev/oracleoci/oraclevde" +export ASM_DEVICE1="/dev/asm-disk1" +export ASM_DEVICE2="/dev/asm-disk2" +export ASM_DEVICE_LIST="${ASM_DEVICE1},${ASM_DEVICE2}" +export COMMON_OS_PWD_FILE="common_os_pwdfile.enc" +export PWD_KEY="pwd.key" +export RACNODE2_CONTAINER_NAME=racnode2 +export RACNODE2_HOST_NAME=racnode2 +export RACNODE_IMAGE_NAME="oracle/database-rac:19.3.0" +export RACNODE2_NODE_VIP=172.16.1.161 +export RACNODE2_VIP_HOSTNAME="racnode2-vip" +export RACNODE2_PRIV_IP=192.168.17.151 +export RACNODE2_PRIV_HOSTNAME="racnode2-priv" +export RACNODE2_PUBLIC_IP=172.16.1.151 +export RACNODE2_PUBLIC_HOSTNAME="racnode2" +export ORACLE_DBNAME="ORCLCDB" +``` +Once necessary variables are exported, copy `docker-compose-additional.yml` file from [this location](./samples/installscenarios/docker/blockdevices/) + +After copying compose file, you can bring up additional RAC Container by following below commands- + +```bash +#-----Bring up racnode2---------- +docker compose up -d ${RACNODE2_CONTAINER_NAME} +docker compose stop ${RACNODE2_CONTAINER_NAME} +docker network disconnect ${PUBLIC_NETWORK_NAME} ${RACNODE2_CONTAINER_NAME} +docker network disconnect ${PRIVATE_NETWORK_NAME} ${RACNODE2_CONTAINER_NAME} +docker network connect ${PUBLIC_NETWORK_NAME} --ip ${RACNODE2_PUBLIC_IP} ${RACNODE2_CONTAINER_NAME} +docker network connect ${PRIVATE_NETWORK_NAME} --ip ${RACNODE2_PRIV_IP} ${RACNODE2_CONTAINER_NAME} +docker compose start ${RACNODE2_CONTAINER_NAME} + +docker compose logs -f ${RACNODE2_CONTAINER_NAME} +racnode2 | 01-20-2024 06:15:35 UTC : : #################################### +racnode2 | 01-20-2024 06:15:35 UTC : : ORACLE RAC DATABASE IS READY TO USE! +racnode2 | 01-20-2024 06:15:35 UTC : : #################################### +``` + +### Deploying Oracle RAC Additional Node on Container with Oracle RAC Storage Container on Docker with Docker Compose +In order to add additional node in existing Oracle RAC on Docker with NFS Storage Devices with Docker Compose, first lets identify necessary variables to export that will be used by `docker-compose.yml` file later. Below is one example of exporting necessary variables related to additional RAC Container with NFS Storage. +```bash +export HEALTHCHECK_INTERVAL=30s +export HEALTHCHECK_TIMEOUT=3s +export HEALTHCHECK_RETRIES=240 +export DNS_HOST_NAME=rac-dns +export DNS_IMAGE_NAME="oracle/rac-dnsserver:latest" +export DNS_DOMAIN="example.com" +export PUBLIC_NETWORK_NAME="rac_pub1_nw" +export PUBLIC_NETWORK_SUBNET="172.16.1.0/24" +export PRIVATE_NETWORK_NAME="rac_pzriv1_nw" +export PRIVATE_NETWORK_SUBNET="192.168.17.0/24" +export DNS_PUBLIC_IP=172.16.1.25 +export INSTALL_NODE=racnode1 +export SCAN_NAME="racnode-scan" +export SCAN_IP=172.16.1.70 +export ASM_DISCOVERY_DIR="/oradata" +export ASM_DEVICE_LIST="/oradata/asm_disk01.img,/oradata/asm_disk02.img,/oradata/asm_disk03.img,/oradata/asm_disk04.img,/oradata/asm_disk05.img" +export COMMON_OS_PWD_FILE="common_os_pwdfile.enc" +export PWD_KEY="pwd.key" +export RACNODE2_CONTAINER_NAME=racnode2 +export RACNODE2_HOST_NAME=racnode2 +export RACNODE_IMAGE_NAME="oracle/database-rac:19.3.0" +export RACNODE2_NODE_VIP=172.16.1.161 +export RACNODE2_VIP_HOSTNAME="racnode2-vip" +export RACNODE2_PRIV_IP=192.168.17.151 +export RACNODE2_PRIV_HOSTNAME="racnode2-priv" +export RACNODE2_PUBLIC_IP=172.16.1.151 +export RACNODE2_PUBLIC_HOSTNAME="racnode2" +export ORACLE_DBNAME="ORCLCDB" +``` +Once necessary variables are exported, copy `docker-compose-additional.yml` file from [this location](./samples/installscenarios/docker/nfsdevices/) + +After copying compose file, you can bring up additional RAC Container by following below commands- + +```bash +#-----Bring up racnode2---------- +docker compose up -d ${RACNODE2_CONTAINER_NAME} +docker compose stop ${RACNODE2_CONTAINER_NAME} +docker network disconnect ${PUBLIC_NETWORK_NAME} ${RACNODE2_CONTAINER_NAME} +docker network disconnect ${PRIVATE_NETWORK_NAME} ${RACNODE2_CONTAINER_NAME} +docker network connect ${PUBLIC_NETWORK_NAME} --ip ${RACNODE2_PUBLIC_IP} ${RACNODE2_CONTAINER_NAME} +docker network connect ${PRIVATE_NETWORK_NAME} --ip ${RACNODE2_PRIV_IP} ${RACNODE2_CONTAINER_NAME} +docker compose start ${RACNODE2_CONTAINER_NAME} + +docker compose logs -f ${RACNODE2_CONTAINER_NAME} +racnode2 | 01-20-2024 06:15:35 UTC : : #################################### +racnode2 | 01-20-2024 06:15:35 UTC : : ORACLE RAC DATABASE IS READY TO USE! +racnode2 | 01-20-2024 06:15:35 UTC : : #################################### +``` + ## Section 5: Oracle RAC on Podman If you are deploying Oracle RAC On Docker, skip to [Section 4: Oracle RAC on Docker](#section-4-oracle-rac-on-docker) From c3bf87ed1cb9bd2c4d7ec38ac8daeade6ced1bd5 Mon Sep 17 00:00:00 2001 From: Saurabh Ahuja Date: Sun, 21 Jan 2024 15:07:45 +0000 Subject: [PATCH 7/9] README instructions updated with RAC setup with Docker compose --- .../RAC/OracleRealApplicationClusters/README.md | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/OracleDatabase/RAC/OracleRealApplicationClusters/README.md b/OracleDatabase/RAC/OracleRealApplicationClusters/README.md index 004f46bb10..79a6f0dadb 100644 --- a/OracleDatabase/RAC/OracleRealApplicationClusters/README.md +++ b/OracleDatabase/RAC/OracleRealApplicationClusters/README.md @@ -593,7 +593,7 @@ ls -lrt $DOCKER_CONFIG/cli-plugins curl -SL https://github.com/docker/compose/releases/download/v2.23.1/docker-compose-linux-x86_64 -o $DOCKER_CONFIG/cli-plugins/docker-compose ls -lrt $DOCKER_CONFIG/cli-plugins chmod +x $DOCKER_CONFIG/cli-plugins/docker-compose -``` +``` ### Deploying Oracle RAC on Container with Block Devices on Docker with Docker Compose In order to setup Oracle RAC on Docker with Block Devices with Docker Compose, first lets identify necessary variables to export that will be used by `docker-compose.yml` file later. Below is one example of exporting necessary variables related to docker network, DNS container, RAC Container and CMAN container discussed in this repo. @@ -684,7 +684,9 @@ racnode-cman | 01-19-2024 16:35:33 UTC : : ################################### racnode-cman | 01-19-2024 16:35:33 UTC : : cman started sucessfully ``` -Note: Docker compose currently doesn't supports assigning multiple network IP address via compose file. Due to this limitation, above commands are specificically assigning required public and private networks to RAC container while stopping it in between. Also, above example is specific to bridge networks. In case, of MCVLAN or IPVLAN networks, you may want to edit `docker-compose.yml` file are per your needs and respective environment variables. +Note: Docker compose currently doesn't supports assigning multiple network IP address via compose file. Due to this limitation, above commands are specificically assigning required public and private networks to RAC container while stopping it in between. Also, above example is specific to bridge networks. + +In case, of MCVLAN or IPVLAN networks, you may want to edit `docker-compose.yml` file are per your needs and respective environment variables. ### Deploying Oracle RAC on Container With Oracle RAC Storage Container with Docker Compose In order to setup Oracle RAC on Docker with Oracle RAC Storage Container with Docker Compose, lets first make sure `nfs-utils` rpm package is installed in Docker Host machine. @@ -801,7 +803,9 @@ racnode-cman | 01-19-2024 16:35:33 UTC : : ################################### racnode-cman | 01-19-2024 16:35:33 UTC : : cman started sucessfully ``` -Note: Docker compose currently doesn't supports assigning multiple network IP address via compose file. Due to this limitation, above commands are specificically assigning required public and private networks to RAC container while stopping it in between. Also, above example is specific to bridge networks. In case, of MCVLAN or IPVLAN networks, you may want to edit `docker-compose.yml` file are per your needs and respective environment variables. +Note: Docker compose currently doesn't supports assigning multiple network IP address via compose file. Due to this limitation, above commands are specificically assigning required public and private networks to RAC container while stopping it in between. Also, above example is specific to bridge networks. + +In case, of MCVLAN or IPVLAN networks, you may want to edit `docker-compose.yml` file are per your needs and respective environment variables. ## Section 4.5: Adding Oracle RAC Container on Docker with Docker Compose ### Deploying Oracle RAC Additional Node on Container with Block Devices on Docker with Docker Compose From 56dabb05812648472ba3802b3e606c1e6e95870a Mon Sep 17 00:00:00 2001 From: Saurabh Ahuja Date: Sun, 21 Jan 2024 15:10:20 +0000 Subject: [PATCH 8/9] README instructions updated with RAC setup with Docker compose --- OracleDatabase/RAC/OracleRealApplicationClusters/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OracleDatabase/RAC/OracleRealApplicationClusters/README.md b/OracleDatabase/RAC/OracleRealApplicationClusters/README.md index 79a6f0dadb..bd1c38719a 100644 --- a/OracleDatabase/RAC/OracleRealApplicationClusters/README.md +++ b/OracleDatabase/RAC/OracleRealApplicationClusters/README.md @@ -803,7 +803,7 @@ racnode-cman | 01-19-2024 16:35:33 UTC : : ################################### racnode-cman | 01-19-2024 16:35:33 UTC : : cman started sucessfully ``` -Note: Docker compose currently doesn't supports assigning multiple network IP address via compose file. Due to this limitation, above commands are specificically assigning required public and private networks to RAC container while stopping it in between. Also, above example is specific to bridge networks. +Note: Docker compose currently doesn't supports assigning multiple network IP address via compose file. Due to this limitation, above commands are specificically assigning required public and private networks to RAC container while stopping it in between. Also, above example is specific to bridge networks. In case, of MCVLAN or IPVLAN networks, you may want to edit `docker-compose.yml` file are per your needs and respective environment variables. From d0c68f9823ae3c4ad44042def86faea9fd762ec6 Mon Sep 17 00:00:00 2001 From: Saurabh Ahuja Date: Sun, 21 Jan 2024 18:10:41 +0000 Subject: [PATCH 9/9] podman changes --- .../blockdevices/podman-compose-addition.yml | 21 +++++++++++++++---- .../podman/blockdevices/podman-compose.yml | 3 --- 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/OracleDatabase/RAC/OracleRealApplicationClusters/samples/installscenarios/podman/blockdevices/podman-compose-addition.yml b/OracleDatabase/RAC/OracleRealApplicationClusters/samples/installscenarios/podman/blockdevices/podman-compose-addition.yml index 9167f96e2d..daefa63f8b 100644 --- a/OracleDatabase/RAC/OracleRealApplicationClusters/samples/installscenarios/podman/blockdevices/podman-compose-addition.yml +++ b/OracleDatabase/RAC/OracleRealApplicationClusters/samples/installscenarios/podman/blockdevices/podman-compose-addition.yml @@ -11,12 +11,9 @@ services: volumes: - /boot:/boot:ro - /opt/.secrets:/run/secrets:ro - - /dev/shm - /opt/containers/rac_host_file:/etc/hosts - - /sys/fs/cgroup:/sys/fs/cgroup:ro tmpfs: - /dev/shm:rw,exec,size=4G - - /run privileged: false environment: DNS_SERVERS: ${DNS_PUBLIC_IP} @@ -61,4 +58,20 @@ services: test: ["CMD-SHELL", "if [ `cat /tmp/orod.log | grep -c 'ORACLE RAC DATABASE IS READY TO USE'` -ge 1 ]; then exit 0; else exit 1; fi"] interval: ${HEALTHCHECK_INTERVAL} timeout: ${HEALTHCHECK_TIMEOUT} - retries: ${HEALTHCHECK_RETRIES} \ No newline at end of file + retries: ${HEALTHCHECK_RETRIES} + +networks: + rac_pub1_nw: + name: ${PUBLIC_NETWORK_NAME} + driver: bridge + ipam: + driver: default + config: + - subnet: "${PUBLIC_NETWORK_SUBNET}" + rac_priv1_nw: + name: ${PRIVATE_NETWORK_NAME} + driver: bridge + ipam: + driver: default + config: + - subnet: "${PRIVATE_NETWORK_SUBNET}" \ No newline at end of file diff --git a/OracleDatabase/RAC/OracleRealApplicationClusters/samples/installscenarios/podman/blockdevices/podman-compose.yml b/OracleDatabase/RAC/OracleRealApplicationClusters/samples/installscenarios/podman/blockdevices/podman-compose.yml index 1978a3acb5..9f5d0db921 100644 --- a/OracleDatabase/RAC/OracleRealApplicationClusters/samples/installscenarios/podman/blockdevices/podman-compose.yml +++ b/OracleDatabase/RAC/OracleRealApplicationClusters/samples/installscenarios/podman/blockdevices/podman-compose.yml @@ -32,12 +32,9 @@ services: volumes: - /boot:/boot:ro - /opt/.secrets:/run/secrets:ro - - /dev/shm - /opt/containers/rac_host_file:/etc/hosts - - /sys/fs/cgroup:/sys/fs/cgroup:ro tmpfs: - /dev/shm:rw,exec,size=4G - - /run privileged: false environment: DNS_SERVERS: ${DNS_PUBLIC_IP}