ODA模拟器实验系列八:容器管理

在上一篇文章“ODA模拟器实验系列之七:创建虚拟化应用程序和数据库”中,我们了解了ODA虚拟化的详细操作。

至此,所有官网文档上的实验就做完了,本文讲述模拟器容器的管理。

之前实验,我们使用的都是19.25版的ODA Simulator。昨天(25年3月17日)正好发布了19.26的新版。今天就用新版试一下,文档参见这里

登入容器

确定容器名:

$ sudo podman ps --format "{{.Names}}"
odasim-1

登入容器:

$ cd ~/simulator_19.26.0.0.0/
$ ./connectContainer.sh -n odasim-1

登入容器后,此时还没有odaadmin用户,只有在BUI中重设口令登录后,才会自动建立odaadmin用户。

检查模拟器状态

虽然odaadmin用户还未创建,但仍可以检查模拟器状态。

[root@odasim-1 /]# /opt/oracle/dcs/bin/statusOdaStack.sh
Status DCS agent & DCS controller
odamysql     101       1  0 03:06 ?        00:00:01 /opt/oracle/dcs/mysql/bin/mysqld --defaults-file=/opt/oracle/dcs/mysql/etc/mysqldb.cnf
root         278       1 12 03:07 ?        00:00:21 java -Xloggc:/opt/oracle/dcs/log/gc-dcs-agent-%t-%p.log -Xms128m -Xmx256m -Doracle.security.jps.config=/opt/oracle/dcs//agent/jps-config.xml -Doda_sim_mode=true -Doda_sim_version=19.25.0.0.0 -Dlogback.configurationFile=/opt/oracle/dcs//conf//dcs-agent-logback.xml -Dmicronaut.config.files=/opt/oracle/dcs//conf//dcs-agent.yml -Djavax.xml.parsers.SAXParserFactory=com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl -jar /opt/oracle/dcs//bin//dcs-agent-19.26.0.0.0.jar
root         279       1  3 03:07 ?        00:00:05 java -Xms32m -Xmx64m -Doda_sim_mode=true -Doda_sim_version=19.25.0.0.0 -jar -Doracle.security.jps.config=/opt/oracle/dcs//agent/jps-config.xml -Dlogback.configurationFile=/opt/oracle/dcs//conf//dcs-controller-logback.xml -Dmicronaut.config.files=/opt/oracle/dcs//conf//dcs-controller.yml -jar /opt/oracle/dcs//bin//dcs-controller-19.26.0.0.0.jar

Status HAMI
Switching current process ID from "root" to "hamictl_oda_dcs" (0 -> 5000)
MEMBER                  HOST                    STATUS                                                      PID         PORT
ODA_DCS0                dcs0-priv               ONLINE  (2025-03-18 03:07:20 UTC; 2min 35s ago)             644         22001

如果模拟器没有运行,则按如下方式启动模拟器(只有不正常的时候才做!否则就会像下面一样报错):

[root@odasim-1 /]# /opt/oracle/dcs/bin/startOdaStack.sh
Starting MySQL for ODA
Setup Agent Auth
generating credentials for dcs-cli and dcs-agent
done generating credentials for dcs-cli and dcs-agent
Setup certificates for the dcs-components
Starting DCS agent
Starting DCS controller
DCS-10017:Input parameter 'DCS_AGENT' with URL 'https:// localhost:7070' cannot be reached. Connection refused.
Agent is not yet ready
DCS-10017:Input parameter 'DCS_AGENT' with URL 'https:// localhost:7070' cannot be reached. Connection refused.
Agent is not yet ready
DCS-10017:Input parameter 'DCS_AGENT' with URL 'https:// localhost:7070' cannot be reached. Connection refused.
Agent is not yet ready
DCS-10017:Input parameter 'DCS_AGENT' with URL 'https:// localhost:7070' cannot be reached. Connection refused.
Agent is not yet ready
^C^C
...

删除所有的容器

注意,要用root执行。

最初,有一容器:

$ podman ps
CONTAINER ID  IMAGE                        COMMAND         CREATED      STATUS         PORTS                                           NAMES
c3a1b1a7b45f  localhost/odasim_ol8:latest  /usr/sbin/init  3 weeks ago  Up 12 minutes  0.0.0.0:7094->7070/tcp, 0.0.0.0:7095->7093/tcp  odasim-1

先删除:

$ ./deleteOdaSimulatorContainer.sh -i 1
Stop Podman container odasim-1
odasim-1
Delete Podman container odasim-1
odasim-1
Delete podman volume persistent-odasim-1-vol
persistent-odasim-1-vol
+ curl -s -X DELETE http://localhost:9000/api/users/0 -H 'Authorization: Bearer ' -H 'accept: application/json'
+ set +x

再清理:

$ ./cleanup_odasimulator_sw.sh
###################################################################
 Removes all existing Podman containers and volumes from the system
###################################################################

Are you sure you want to continue (yes/no) :
yes

Deleting all podman containers
Error: you must provide at least one name or id

Deleting all podman volumes
WARNING! This command removes:
        - all stopped containers
        - all networks not used by at least one container
        - all volumes not used by at least one container
        - all dangling images
        - all dangling build cache

Are you sure you want to continue? [y/N] y
Deleted Volumes
perl-vol
docs-vol
odasimswbits
Total reclaimed space: 1.947GB

确认已删除:

# podman ps
CONTAINER ID  IMAGE       COMMAND     CREATED     STATUS      PORTS       NAMES

安装模拟器容器(单节点模式)

注意,要用root执行。

运行模拟器安装脚本(仅setup):

$ ./setup_odasimulator_sw.sh noportainer
Running Setup for ODA Simulator

Installing podman engine:
Last metadata expiration check: 0:04:24 ago on Tue 18 Mar 2025 03:46:35 AM GMT.
Package podman-4:4.9.4-19.0.1.module+el8.10.0+90509+b5e1e789.x86_64 is already installed.
Dependencies resolved.
Nothing to do.
Complete!
Last metadata expiration check: 0:04:28 ago on Tue 18 Mar 2025 03:46:35 AM GMT.
No match for argument: podman-engine
Error: Unable to find a match: podman-engine
Getting image source signatures
Copying blob ad464fa1322c skipped: already exists
Copying blob 1e4e48e06b99 skipped: already exists
Copying blob 42c49b021988 skipped: already exists
Copying config 482b9c36d9 done   |
Writing manifest to image destination
Loaded image: localhost/odasim_ol8:latest

此时还没有容器:

# podman ps
CONTAINER ID  IMAGE       COMMAND     CREATED     STATUS      PORTS       NAMES

创建一个单节点ODA模拟容器odasim-1(时间稍长,耐心等待):

$ ./createOdaSimulatorContainer.sh -d odasim -t single -o noportainer
Error: no such volume perl-vol
Create Persistent volumes to store Perl
perl-vol
Copy Perl to perl-vol
Error: no such volume docs-vol
Create Persistent volumes to store docs
docs-vol
replacing docs-uat.us with docs
zipping docs.zip
Copy docs
Copy oda-assistant
Copy oda-python3
Error: no such volume odasimswbits
Create Persistent volumes odasimswbits
odasimswbits
Copy ODA simulator bits to odasimswbits
Copy ODA Lab to odasimswbits

STEP: Creating podman container: odasim-1

Create Podman container odasim-1
Create Podman volume persistent-odasim-1-vol
persistent-odasim-1-vol
Start Podman container odasim-1
odasim-1
Copying following port file to the container:
7094
Copying following port file to the container:
7095
Creating systemd service for container for auto restart across reboot

DEPRECATED command:
It is recommended to use Quadlets for running containers and pods under systemd.

Please refer to podman-systemd.unit(5) for details.
WARN[0000] Container a6ada8b8c3f9cfd8798717c7b05dc30233fd32dbb3371579b13fe9088ddd64d3 has restart policy "always" which can lead to issues on shutdown: consider recreating the container without a restart policy and use systemd's restart mechanism instead
con_long_id : a6ada8b8c3f9cfd8798717c7b05dc30233fd32dbb3371579b13fe9088ddd64d3
userid:
Removing execute permissions for *.out files...
Removing execute permissions for *.xml files...
Removing execute permissions for *.zip files...
Removing execute permissions for *.trm files...
Removing execute permissions for *.trc files...
Removing execute permissions for *.html files...
Removing execute permissions for *.yml files...
Removing execute permissions for *.json files...
Removing execute permissions for *.dat files...
Removing execute permissions for *.txt files...
Execute permissions removed for all specified file types.
Copy Simulator bits...
Extract MySQL for ODA...
...
Create group and user odamysql
...
Starting MySQL for ODA
Setup Agent Auth
generating credentials for dcs-cli and dcs-agent
done generating credentials for dcs-cli and dcs-agent
Setup certificates for the dcs-components
Starting DCS agent
Starting DCS controller
DCS-10017:Input parameter 'DCS_AGENT' with URL 'https:// localhost:7070' cannot be reached. Connection refused.
Agent is not yet ready
DCS-10017:Input parameter 'DCS_AGENT' with URL 'https:// localhost:7070' cannot be reached. Connection refused.
Agent is not yet ready
DCS-10001:Internal error encountered: Failed to build session factory for dcsagentdb.
Agent is not yet ready
DCS-10033:Service DCS agent is down.
Agent is not yet ready
DCS-10033:Service DCS agent is down.
Agent is not yet ready
...

在以上输出中,一直输出错误信息Agent is not yet ready。只好Ctrl+C中断。

似乎不影响,报成功了:

^C

***********************************************
ODA Simulator system info:
Executed on: 2025_03_18_03_53_AM
Executed by:


num=          1
dept=       odasim
hostpubip=    <ip of simulator machine>


USERS:
Container : odasim-1
ODA Console: https://<ip of simulator machine>:7095/mgmt/index.html
ODA cli access: Connect to the host and run following command:
sh connectContainer.sh -n odasim-1


***********************************************

STEP: Updating user metadata file


STEP: Create podman container file with container IDs and IP addresses


ODA Simulator setup is READY

容器有了。只有一个容器,说明是单机模式:

$ podman ps
CONTAINER ID  IMAGE                        COMMAND         CREATED        STATUS        PORTS                                           NAMES
a6ada8b8c3f9  localhost/odasim_ol8:latest  /usr/sbin/init  5 minutes ago  Up 4 minutes  0.0.0.0:7094->7070/tcp, 0.0.0.0:7095->7093/tcp  odasim-1

这是一台全新的ODA模拟器,用BUI试了下,是初始的状态。所有的实验可以重新开始了。

安装模拟器容器(HA模式)

先删除和清理之前的所有容器:

./deleteOdaSimulatorContainer.sh -i 1
./cleanup_odasimulator_sw.sh

创建2节点ODA(即HA模式)模拟器:

./setup_odasimulator_sw.sh noportainer
./createOdaSimulatorContainer.sh -d odasim -t ha -o noportainer

要创建2个容器,时间较长。最后仍然出现了DCS Agent的错误,只好Ctrl+C中断。

...
DCS-10033:Service DCS agent is down.
Agent is not yet ready
DCS-10033:Service DCS agent is down.

Agent is not yet ready
^C

***********************************************
ODA Simulator system info:
Executed on: 2025_03_18_05_17_AM
Executed by:


num=          1
dept=       odasim
hostpubip=    <ip of simulator machine>


USERS:
Container : odasim-1-node0
ODA Console: https://<ip of simulator machine>:7095/mgmt/index.html
ODA cli access: Connect to the host and run following command:
sh connectContainer.sh -n odasim-1-node0


Container : odasim-1-node1
ODA Console: https://<ip of simulator machine>:7097/mgmt/index.html
ODA cli access: Connect to the host and run following command:
sh connectContainer.sh -n odasim-1-node1


***********************************************

STEP: Updating user metadata file


STEP: Create podman container file with container IDs and IP addresses


ODA Simulator setup is READY

成功创建2个容器:

$ podman ps
CONTAINER ID  IMAGE                        COMMAND         CREATED        STATUS        PORTS                                           NAMES
4cda20a387de  localhost/odasim_ol8:latest  /usr/sbin/init  5 minutes ago  Up 5 minutes  0.0.0.0:7094->7070/tcp, 0.0.0.0:7095->7093/tcp  odasim-1-node0
4e20bb7761b1  localhost/odasim_ol8:latest  /usr/sbin/init  5 minutes ago  Up 5 minutes  0.0.0.0:7096->7070/tcp, 0.0.0.0:7097->7093/tcp  odasim-1-node1

日志如下:

ODA Simulator system info:
Executed on: 2025_03_18_05_17_AM
Executed by:


num=          1
dept=       odasim
hostpubip=    <ip of simulator machine>


USERS:
Container : odasim-1-node0
ODA Console: https://<ip of simulator machine>:7095/mgmt/index.html
ODA cli access: Connect to the host and run following command:
sh connectContainer.sh -n odasim-1-node0


Container : odasim-1-node1
ODA Console: https://<ip of simulator machine>:7097/mgmt/index.html
ODA cli access: Connect to the host and run following command:
sh connectContainer.sh -n odasim-1-node1

然后,进入某一节点配置ODA即可。下面是配置文件示例:

{
    "instance": {
        "instanceBaseName": "odambox-c",
        "objectStoreCredentials": null,
        "name": "odambox",
        "systemPassword": null,
        "timeZone": "Asia/Aden",
        "domainName": "oracle.com",
        "dnsServers": [
            "10.0.1.8",
            "10.0.1.9",
            "10.0.1.10"
        ],
        "ntpServers": [
            "10.0.1.200"
        ],
        "isMultiUserAccessEnabled": "true",
        "oracleUserPasswd": null,
        "gridUserPasswd": null,
        "isRoleSeparated": true,
        "osUserGroup": {
            "users": [
                {
                    "userName": "oracle",
                    "userRole": "oracleUser",
                    "userId": "9001"
                },
                {
                    "userName": "grid",
                    "userRole": "gridUser",
                    "userId": "9000"
                }
            ],
            "groups": [
                {
                    "groupName": "oinstall",
                    "groupRole": "oinstall",
                    "groupId": 9001
                },
                {
                    "groupName": "dbaoper",
                    "groupRole": "dbaoper",
                    "groupId": 9002
                },
                {
                    "groupName": "dba",
                    "groupRole": "dba",
                    "groupId": 9003
                },
                {
                    "groupName": "asmadmin",
                    "groupRole": "asmadmin",
                    "groupId": 9004
                },
                {
                    "groupName": "asmoper",
                    "groupRole": "asmoper",
                    "groupId": 9005
                },
                {
                    "groupName": "asmdba",
                    "groupRole": "asmdba",
                    "groupId": "9006"
                }
            ]
        },
        "dbEdition": "EE"
    },
    "nodes": [
        {
            "nodeNumber": "0",
            "nodeName": "odanode0",
            "network": [
                {
                    "ipAddress": "192.168.0.100",
                    "subNetMask": "255.255.255.0",
                    "gateway": "192.168.0.1",
                    "nicName": "eth0",
                    "networkType": [
                        "Public"
                    ],
                    "isDefaultNetwork": true
                }
            ]
        },
        {
            "nodeNumber": "1",
            "nodeName": "odanode1",
            "network": [
                {
                    "ipAddress": "192.168.0.101",
                    "subNetMask": "255.255.255.0",
                    "gateway": "192.168.0.1",
                    "nicName": "eth0",
                    "networkType": [
                        "Public"
                    ],
                    "isDefaultNetwork": true
                }
            ]
        }
    ],
    "grid": {
        "vip": [
            {
                "nodeNumber": "0",
                "vipName": "",
                "ipAddress": "10.0.0.100"
            },
            {
                "nodeNumber": "1",
                "vipName": "",
                "ipAddress": "10.0.0.101"
            }
        ],
        "diskGroup": [
            {
                "diskGroupName": "DATA",
                "diskPercentage": 80,
                "redundancy": "FLEX"
            },
            {
                "diskGroupName": "RECO",
                "diskPercentage": 20,
                "redundancy": "FLEX"
            },
            {
                "diskGroupName": "FLASH",
                "diskPercentage": 100,
                "redundancy": "FLEX"
            }
        ],
        "language": "en",
        "enableAFD": "TRUE",
        "scan": {
            "scanName": "scan-oda",
            "ipAddresses": []
        }
    },
    "database": {
        "dbName": "orcl",
        "dbCharacterSet": {
            "characterSet": "AL32UTF8",
            "nlsCharacterset": "AL16UTF16",
            "dbTerritory": "AMERICA",
            "dbLanguage": "AMERICAN"
        },
        "dbRedundancy": "MIRROR",
        "dbRole": "PRIMARY",
        "adminPassword": null,
        "dbEdition": "EE",
        "databaseUniqueName": "orcl",
        "dbClass": "OLTP",
        "dbVersion": "19.25.0.0.241015",
        "dbHomeId": null,
        "instanceOnly": false,
        "isCdb": true,
        "pdBName": "orclpdb1",
        "dbShape": "odb1",
        "pdbAdminuserName": "pdbadmin",
        "enableTDE": false,
        "dbType": "SI",
        "dbTargetNodeName": "odanode0",
        "enableEEHA": true,
        "dbStorage": "ASM",
        "dbConsoleEnable": false,
        "dbOnFlashStorage": false,
        "backupConfigId": null,
        "rmanBkupPassword": null,
        "tdePassword": null
    },
    "acr": {
        "acrEnable": false
    },
    "sysOraHomeStorage": {
        "diskgroup": "DATA",
        "volumeSize": 80
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值