gstanden / orabuntu-lxc Goto Github PK
View Code? Open in Web Editor NEWDeveloper and User Guide
Home Page: https://gstanden.github.io/
License: GNU General Public License v3.0
Developer and User Guide
Home Page: https://gstanden.github.io/
License: GNU General Public License v3.0
Oracle 12c is the "container-friendly" release of Oracle 12c. Study how pluggable databases would be used in a container environment. The major advantages are:
On the first run, orabuntu-lxc can be run with all questions set to default values by keying on whether /etc/orabuntu-release exists or not. On the first run, it can be installed as a .deb with default parameters set (maybe a preinstall script that asks for the versions and domains, etc.). Get that done with debreate.
SLOB2 should be part of the distribution so it can be used for benchmarking.
Some feedback to screen needed so user sees progress.
Each RAC instance needs sufficient hugepages so the amount needs to be 1153 x no. of RAC instances. Therefore, automation should have some settable parameter at run time which asks how many RAC instances will be created and then generates a sed command to update nr.hugepages to the required value (based on 1.5 Gb SGA).
stop by version, stop by specific container name, stop all, etc.
Script currently uses hardcoded 10.207.39.x IP range. This needs to be arbitrarily settable to any desired subnet.
The delegated subdomain for the gns1 subdomain needs to be dynamically updated with the chosen domain, e.g. not gns1.vmem.org but rather for example gns1.orabuntu-lxc.com if using the main domain orabuntu-lxc.com. The change needs to be made in /etc/dhcp/dhclient.conf which is where this gets set. So to the sed commands which update files needs to be added the user's chosen domain value.
The package lists required for each version of OEL for running 12c RAC vary from version to version. Need to customize the lxc-services.sh script.
lxc-services-oel5.sh
lxc-services-oel6.sh
lxc-services-oel7.sh
Brochures need to emphasize architecture, major advantages of orabuntu-lxc, etc.
Currently the GNS cluster name is hardcoded as "lxc1". It needs to be user settable. The IP address for the GNS is hardcoded as 10.207.39.3 this also needs to be updated to be user-settable.
The lxc-start used on the system should just do the veth_cleanup.sh everytime the container is started to be sure it starts successfully, or it can have a routine to check and run it if necessary.
Settable domain needed. Right now hardcoded to vmem.org domain.
Develop a way to do a silent oracle install so that entire system can be installed with deb package. This will also require downloading Oracle install media from command line.
Can't create PID file /run/dhcp-server/dhcpd.pid: Permission denied.
The /etc/rc.local used to set the owner, group and mode but lately it does not seem to be working.
I have recoded orabuntu-lxc to simply create a single eth0 interface in the container that is given it's IP address from DHCP. Formerly, the software created LXC config file that had everything needed for creating Oracle 12c RAC GNS ASM Flex Clusters. This ASM Flex Cluster feature will now become an add-in prior to cloning - an option - the first of many - for customizing the config file for the Oracle product you intend to install. My prototype software used 2 ASM dedicated network subnets, and 4 Oracle RAC private interface dedicated network subnets. This should be user selectable, as to number of redundant networks, and IP address of networks. This will be added as a menu-driven "add a network to your containers" feature that may also be associated with a "choose your Oracle enterprise software product" which then presents the user with configurable settings for the containers to be used for a specific product install.
OEL5 containers stop very slowly. Use the "-k" switch to speed that up.
These scripts cleanup remnant veth pairs that can cause containers to fail to start. I have subroutines in most of my startup code for containers to resort to running veth_cleanup script when container fails to start after 5 wait iterations (fails to show RUNNING status as polled from lxc-ls -f) and I need to be sure that all container start code has this veth_cleanup subroutine and that all veth_cleanup scripts are being created correctly dynamically.
Include SLOB2 benchmarking tools.
Configuring ASM Filter Driver on Ubuntu - investigate if it can be done.
The hugepages_settings.sh file currently supports only 2.x and 3.x kernels. Edit for 4.x kernels needed. This can either be done as a sed edit to the file distributed from lxc-lxcora01.tar, or the lxc-lxcora01.tar can be recreated containing the new version of hugepages_settings.sh.
The Oracle GI can be installed silently so that even that step can be automated.
Sometimes the NTP fails prerequisite checks. When this happens, it is required to:
So this would be a fixit type script that could be automatically run on each container with just one command (sshpass commands run from a single file on the install node). The error could even be auto-detected from the text format installer log file and run automatically if detected.
Incorporate this code into a cleanup script for failed starts due to existing veth pairs:
sudo ip link show | grep lxcora13 | cut -f2 -d':' | sed 's/ //g' | cut -f1 -d'@' | sed 's/^/sudo ip link del "/' | sed 's/$/"/'
The best way to handle these is probable to put them on a separate network. That way the DHCP assignments which have the last triplet matching the container name will not be affected. Also, the lxcora00xx container needs to have its if-up.d and if-down.d files created. If I put these seed containers on a separate network, then they can use the exact same scripting for DHCP assignment, but just use a different name prefix. Instead of 'lxcora' call them 'auora' using the atomic symbol for gold (to suggest 'gold copy') Au. Another possibility would be 'stdora' for "standard oracle'. Or what about just 'oraclexx' - yes, I think that's it. The seed containers gold copies will be 'oraclexx' for example 'oracle65', 'oracle67', etc. showing their version. These will be on a separate network.
In addition to the enterprise uses of Orabuntu-lxc, it's a great replacement for VirtualBox because you get bare metal performance and much higher density and elasticity, which means you can prototype systems faster, and do more with just your one laptop - many more containers per Gb than VM's and many more RUNNING containers per unit memory and computer than with traditional solutions such as VirtualBox.
The complete cleanup needs to
The instantclient is configured at the Ubuntu host level and allows user to connect to Oracle containerized instances from the host OS using instantclient sqlplus.
MySQL can also be configured in the containers, and it should be added as an option.
New settings in sysctl.conf (32 Gb physical RAM)
vm.nr_hugepages = 3500
kernel.shmall = 3174488
kernel.shmmax = 16253378560
Currently, the IP subnets are hardcoded (10.207.39.x and 10.207.29.x). These need to be user-settable as passed in parameters to the scripts.
The scst-net file logs out of the SCST target on shutdown or on reboot (runs from /etc/network/if-down.d) and needs to be part of the ubuntu-host.tar distribution for configuring the OS to ensure that shutdowns and reboots do not hang. This will probably replace the code used at the end of create-scst-5b.sh so remove that code as part of this issue resolution.
Currently, the domain servers which are statically assigned to 10.207.39.1 and 10.207.29.1 (the nameservers) are hardcoded names kstllchtr01 and kstllccom01, but these should be user-settable names passed in as parameters.
So that you can demonstrate how fast one can "etch-a-sketch" an Oracle ASM Flex Cluster.
This is a workaround, because of course this will execute whenever the network goes down, but still it works very well for logging out of SCST before a shutdown. Shutting down with the LUNs still present and logged in to SCST was causing reboot to hang, and sometimes shutdown as well. This fix seems to be working very well.
High time the wiki was sketched out and filled in a bit.
Add option for postgres.
For now, put in messaging that oel59 containers take significantly longer to shutdown. For the future, try to diagnose the problem causing them to shutdown much more slowly, and fix so that the shutdown just as fast as oel6x containers.
Incorporate dd tool into orabuntu-lxc for cleaning up headers of ASM LUNs
Automation does not work with 7.x Oracle Enterprise Linux Containers. When automation attempts to bring up container, it hangs, and also causes commands like lxc-ls -f to hang and other problems. As of now, only 6.x OEL LXC containers can be optioned for automation.
Nandydandyoracle needs some cleanups and improvements. Try to have these done by showtime.
After deleting a database system in a container, one may want to create new storage LUNs for a new deployment. Scripts are needed which delete all the LUNs in use and allow for new LUNs to be created for a new deployment in container.
DB2 can be configured as an option possibly.
The lxc-services.sh script gets updated in the clone containers script with a sed edit. Put the edited version of lxc-services.sh into the tar bundles, and remove the edit from the clone script.
The memlock value will be used only with oracle user (not grid) and new values are needed based on the 1.5G SGA. This can be done as a sed edit, as an overwrite file included in the distribution, or the lxc-lxcora01.tar can be recreated with the new limits.conf file.
Showing how fast containers start
The create-scst-4a.sh script should have a switch to create the SCST LUN as a 4K native format LUN as an option.
orabuntu-lxc systems can be erased and re-created so quickly that they can be thought of as "etch-a-sketch" for DBA's and DEV's.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.