Dean Troyer | 0986a7b | 2014-10-29 22:08:13 -0500 | [diff] [blame] | 1 | ============== |
| 2 | Multi-Node Lab |
| 3 | ============== |
Sean M. Collins | 09e550c | 2014-10-21 11:40:08 -0400 | [diff] [blame] | 4 | |
| 5 | Here is OpenStack in a realistic test configuration with multiple |
| 6 | physical servers. |
| 7 | |
| 8 | Prerequisites Linux & Network |
Sean Dague | 3293046 | 2014-11-18 06:51:16 -0500 | [diff] [blame] | 9 | ============================= |
Sean M. Collins | 09e550c | 2014-10-21 11:40:08 -0400 | [diff] [blame] | 10 | |
| 11 | Minimal Install |
Sean Dague | 3293046 | 2014-11-18 06:51:16 -0500 | [diff] [blame] | 12 | --------------- |
Sean M. Collins | 09e550c | 2014-10-21 11:40:08 -0400 | [diff] [blame] | 13 | |
| 14 | You need to have a system with a fresh install of Linux. You can |
| 15 | download the `Minimal |
| 16 | CD <https://help.ubuntu.com/community/Installation/MinimalCD>`__ for |
| 17 | Ubuntu releases since DevStack will download & install all the |
| 18 | additional dependencies. The netinstall ISO is available for |
Dean Troyer | ea3cdfa | 2014-11-08 08:29:16 -0600 | [diff] [blame] | 19 | `Fedora <http://mirrors.kernel.org/fedora/releases/>`__ |
Sean M. Collins | 09e550c | 2014-10-21 11:40:08 -0400 | [diff] [blame] | 20 | and |
Dean Troyer | ea3cdfa | 2014-11-08 08:29:16 -0600 | [diff] [blame] | 21 | `CentOS/RHEL <http://mirrors.kernel.org/centos/>`__. |
Sean M. Collins | 09e550c | 2014-10-21 11:40:08 -0400 | [diff] [blame] | 22 | |
| 23 | Install a couple of packages to bootstrap configuration: |
| 24 | |
| 25 | :: |
| 26 | |
| 27 | apt-get install -y git sudo || yum install -y git sudo |
| 28 | |
| 29 | Network Configuration |
Sean Dague | 3293046 | 2014-11-18 06:51:16 -0500 | [diff] [blame] | 30 | --------------------- |
Sean M. Collins | 09e550c | 2014-10-21 11:40:08 -0400 | [diff] [blame] | 31 | |
| 32 | The first iteration of the lab uses OpenStack's FlatDHCP network |
| 33 | controller so only a single network will be required. It should be on |
| 34 | its own subnet without DHCP; the host IPs and floating IP pool(s) will |
| 35 | come out of this block. This example uses the following: |
| 36 | |
| 37 | - Gateway: 192.168.42.1 |
| 38 | - Physical nodes: 192.168.42.11-192.168.42.99 |
| 39 | - Floating IPs: 192.168.42.128-192.168.42.254 |
| 40 | |
| 41 | Configure each node with a static IP. For Ubuntu edit |
| 42 | ``/etc/network/interfaces``: |
| 43 | |
| 44 | :: |
| 45 | |
| 46 | auto eth0 |
| 47 | iface eth0 inet static |
| 48 | address 192.168.42.11 |
| 49 | netmask 255.255.255.0 |
| 50 | gateway 192.168.42.1 |
| 51 | |
| 52 | For Fedora and CentOS/RHEL edit |
| 53 | ``/etc/sysconfig/network-scripts/ifcfg-eth0``: |
| 54 | |
| 55 | :: |
| 56 | |
| 57 | BOOTPROTO=static |
| 58 | IPADDR=192.168.42.11 |
| 59 | NETMASK=255.255.255.0 |
| 60 | GATEWAY=192.168.42.1 |
| 61 | |
| 62 | Installation shake and bake |
Sean Dague | 3293046 | 2014-11-18 06:51:16 -0500 | [diff] [blame] | 63 | =========================== |
Sean M. Collins | 09e550c | 2014-10-21 11:40:08 -0400 | [diff] [blame] | 64 | |
| 65 | Add the DevStack User |
Sean Dague | 3293046 | 2014-11-18 06:51:16 -0500 | [diff] [blame] | 66 | --------------------- |
Sean M. Collins | 09e550c | 2014-10-21 11:40:08 -0400 | [diff] [blame] | 67 | |
| 68 | OpenStack runs as a non-root user that has sudo access to root. There is |
| 69 | nothing special about the name, we'll use ``stack`` here. Every node |
| 70 | must use the same name and preferably uid. If you created a user during |
| 71 | the OS install you can use it and give it sudo privileges below. |
| 72 | Otherwise create the stack user: |
| 73 | |
| 74 | :: |
| 75 | |
David Rabel | 530d90c | 2017-03-22 08:25:26 +0100 | [diff] [blame] | 76 | useradd -s /bin/bash -d /opt/stack -m stack |
Sean M. Collins | 09e550c | 2014-10-21 11:40:08 -0400 | [diff] [blame] | 77 | |
yatinkarel | c64ea4f | 2022-04-20 12:30:09 +0530 | [diff] [blame] | 78 | Ensure home directory for the ``stack`` user has executable permission for all, |
| 79 | as RHEL based distros create it with ``700`` and Ubuntu 21.04+ with ``750`` |
| 80 | which can cause issues during deployment. |
| 81 | |
| 82 | :: |
| 83 | |
| 84 | chmod +x /opt/stack |
| 85 | |
Sean M. Collins | 09e550c | 2014-10-21 11:40:08 -0400 | [diff] [blame] | 86 | This user will be making many changes to your system during installation |
| 87 | and operation so it needs to have sudo privileges to root without a |
| 88 | password: |
| 89 | |
| 90 | :: |
| 91 | |
Martin Kopec | b70d98f | 2022-07-20 14:05:15 +0000 | [diff] [blame] | 92 | echo "stack ALL=(ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/stack |
Sean M. Collins | 09e550c | 2014-10-21 11:40:08 -0400 | [diff] [blame] | 93 | |
| 94 | From here on use the ``stack`` user. **Logout** and **login** as the |
| 95 | ``stack`` user. |
| 96 | |
| 97 | Set Up Ssh |
Sean Dague | 3293046 | 2014-11-18 06:51:16 -0500 | [diff] [blame] | 98 | ---------- |
Sean M. Collins | 09e550c | 2014-10-21 11:40:08 -0400 | [diff] [blame] | 99 | |
| 100 | Set up the stack user on each node with an ssh key for access: |
| 101 | |
| 102 | :: |
| 103 | |
| 104 | mkdir ~/.ssh; chmod 700 ~/.ssh |
| 105 | echo "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCyYjfgyPazTvGpd8OaAvtU2utL8W6gWC4JdRS1J95GhNNfQd657yO6s1AH5KYQWktcE6FO/xNUC2reEXSGC7ezy+sGO1kj9Limv5vrvNHvF1+wts0Cmyx61D2nQw35/Qz8BvpdJANL7VwP/cFI/p3yhvx2lsnjFE3hN8xRB2LtLUopUSVdBwACOVUmH2G+2BWMJDjVINd2DPqRIA4Zhy09KJ3O1Joabr0XpQL0yt/I9x8BVHdAx6l9U0tMg9dj5+tAjZvMAFfye3PJcYwwsfJoFxC8w/SLtqlFX7Ehw++8RtvomvuipLdmWCy+T9hIkl+gHYE4cS3OIqXH7f49jdJf jesse@spacey.local" > ~/.ssh/authorized_keys |
| 106 | |
| 107 | Download DevStack |
Sean Dague | 3293046 | 2014-11-18 06:51:16 -0500 | [diff] [blame] | 108 | ----------------- |
Sean M. Collins | 09e550c | 2014-10-21 11:40:08 -0400 | [diff] [blame] | 109 | |
| 110 | Grab the latest version of DevStack: |
| 111 | |
| 112 | :: |
| 113 | |
Matt Riedemann | 9b6d2f2 | 2019-06-18 10:43:16 -0400 | [diff] [blame] | 114 | git clone https://opendev.org/openstack/devstack |
Sean M. Collins | 09e550c | 2014-10-21 11:40:08 -0400 | [diff] [blame] | 115 | cd devstack |
| 116 | |
| 117 | Up to this point all of the steps apply to each node in the cluster. |
| 118 | From here on there are some differences between the cluster controller |
| 119 | (aka 'head node') and the compute nodes. |
| 120 | |
| 121 | Configure Cluster Controller |
Sean Dague | 3293046 | 2014-11-18 06:51:16 -0500 | [diff] [blame] | 122 | ---------------------------- |
Sean M. Collins | 09e550c | 2014-10-21 11:40:08 -0400 | [diff] [blame] | 123 | |
| 124 | The cluster controller runs all OpenStack services. Configure the |
| 125 | cluster controller's DevStack in ``local.conf``: |
| 126 | |
| 127 | :: |
| 128 | |
| 129 | [[local|localrc]] |
| 130 | HOST_IP=192.168.42.11 |
Sean M. Collins | 09e550c | 2014-10-21 11:40:08 -0400 | [diff] [blame] | 131 | FIXED_RANGE=10.4.128.0/20 |
Sean M. Collins | 09e550c | 2014-10-21 11:40:08 -0400 | [diff] [blame] | 132 | FLOATING_RANGE=192.168.42.128/25 |
Sean M. Collins | 09e550c | 2014-10-21 11:40:08 -0400 | [diff] [blame] | 133 | LOGFILE=/opt/stack/logs/stack.sh.log |
| 134 | ADMIN_PASSWORD=labstack |
Swapnil (coolsvap) Kulkarni | c988bf6 | 2015-10-08 13:10:43 +0530 | [diff] [blame] | 135 | DATABASE_PASSWORD=supersecret |
Balagopal | 7ed812c | 2016-03-01 04:43:31 +0000 | [diff] [blame] | 136 | RABBIT_PASSWORD=supersecret |
| 137 | SERVICE_PASSWORD=supersecret |
Sean M. Collins | 09e550c | 2014-10-21 11:40:08 -0400 | [diff] [blame] | 138 | |
| 139 | In the multi-node configuration the first 10 or so IPs in the private |
| 140 | subnet are usually reserved. Add this to ``local.sh`` to have it run |
| 141 | after every ``stack.sh`` run: |
| 142 | |
| 143 | :: |
| 144 | |
| 145 | for i in `seq 2 10`; do /opt/stack/nova/bin/nova-manage fixed reserve 10.4.128.$i; done |
| 146 | |
| 147 | Fire up OpenStack: |
| 148 | |
| 149 | :: |
| 150 | |
| 151 | ./stack.sh |
| 152 | |
| 153 | A stream of activity ensues. When complete you will see a summary of |
| 154 | ``stack.sh``'s work, including the relevant URLs, accounts and passwords |
| 155 | to poke at your shiny new OpenStack. The most recent log file is |
| 156 | available in ``stack.sh.log``. |
| 157 | |
| 158 | Configure Compute Nodes |
Sean Dague | 3293046 | 2014-11-18 06:51:16 -0500 | [diff] [blame] | 159 | ----------------------- |
Sean M. Collins | 09e550c | 2014-10-21 11:40:08 -0400 | [diff] [blame] | 160 | |
| 161 | The compute nodes only run the OpenStack worker services. For additional |
| 162 | machines, create a ``local.conf`` with: |
| 163 | |
| 164 | :: |
| 165 | |
Kashyap Kopparam | cd1c3c7 | 2014-10-31 17:32:57 +0530 | [diff] [blame] | 166 | [[local|localrc]] |
Sean M. Collins | 09e550c | 2014-10-21 11:40:08 -0400 | [diff] [blame] | 167 | HOST_IP=192.168.42.12 # change this per compute node |
Sean M. Collins | 09e550c | 2014-10-21 11:40:08 -0400 | [diff] [blame] | 168 | FIXED_RANGE=10.4.128.0/20 |
Sean M. Collins | 09e550c | 2014-10-21 11:40:08 -0400 | [diff] [blame] | 169 | FLOATING_RANGE=192.168.42.128/25 |
Sean M. Collins | 09e550c | 2014-10-21 11:40:08 -0400 | [diff] [blame] | 170 | LOGFILE=/opt/stack/logs/stack.sh.log |
| 171 | ADMIN_PASSWORD=labstack |
Swapnil (coolsvap) Kulkarni | c988bf6 | 2015-10-08 13:10:43 +0530 | [diff] [blame] | 172 | DATABASE_PASSWORD=supersecret |
Balagopal | 7ed812c | 2016-03-01 04:43:31 +0000 | [diff] [blame] | 173 | RABBIT_PASSWORD=supersecret |
| 174 | SERVICE_PASSWORD=supersecret |
Sean M. Collins | 09e550c | 2014-10-21 11:40:08 -0400 | [diff] [blame] | 175 | DATABASE_TYPE=mysql |
| 176 | SERVICE_HOST=192.168.42.11 |
Masaki Matsushita | 597c902 | 2015-08-15 11:35:20 +0900 | [diff] [blame] | 177 | MYSQL_HOST=$SERVICE_HOST |
| 178 | RABBIT_HOST=$SERVICE_HOST |
| 179 | GLANCE_HOSTPORT=$SERVICE_HOST:9292 |
Pierre Riteau | 0a31630 | 2022-01-21 10:07:07 +0100 | [diff] [blame] | 180 | ENABLED_SERVICES=n-cpu,c-vol,placement-client,ovn-controller,ovs-vswitchd,ovsdb-server,q-ovn-metadata-agent |
Sean M. Collins | 09e550c | 2014-10-21 11:40:08 -0400 | [diff] [blame] | 181 | NOVA_VNC_ENABLED=True |
Stephen Finucane | 8c54869 | 2018-05-11 16:12:17 +0530 | [diff] [blame] | 182 | NOVNCPROXY_URL="http://$SERVICE_HOST:6080/vnc_lite.html" |
Sean M. Collins | 09e550c | 2014-10-21 11:40:08 -0400 | [diff] [blame] | 183 | VNCSERVER_LISTEN=$HOST_IP |
| 184 | VNCSERVER_PROXYCLIENT_ADDRESS=$VNCSERVER_LISTEN |
| 185 | |
| 186 | Fire up OpenStack: |
| 187 | |
| 188 | :: |
| 189 | |
| 190 | ./stack.sh |
| 191 | |
| 192 | A stream of activity ensues. When complete you will see a summary of |
| 193 | ``stack.sh``'s work, including the relevant URLs, accounts and passwords |
| 194 | to poke at your shiny new OpenStack. The most recent log file is |
| 195 | available in ``stack.sh.log``. |
| 196 | |
Matt Riedemann | c63ecad | 2017-07-25 17:08:50 -0400 | [diff] [blame] | 197 | Starting in the Ocata release, Nova requires a `Cells v2`_ deployment. Compute |
| 198 | node services must be mapped to a cell before they can be used. |
| 199 | |
| 200 | After each compute node is stacked, verify it shows up in the |
| 201 | ``nova service-list --binary nova-compute`` output. The compute service is |
| 202 | registered in the cell database asynchronously so this may require polling. |
| 203 | |
| 204 | Once the compute node services shows up, run the ``./tools/discover_hosts.sh`` |
| 205 | script from the control node to map compute hosts to the single cell. |
| 206 | |
| 207 | The compute service running on the primary control node will be |
| 208 | discovered automatically when the control node is stacked so this really |
| 209 | only needs to be performed for subnodes. |
| 210 | |
| 211 | .. _Cells v2: https://docs.openstack.org/nova/latest/user/cells.html |
| 212 | |
Sean M. Collins | 09e550c | 2014-10-21 11:40:08 -0400 | [diff] [blame] | 213 | Cleaning Up After DevStack |
Sean Dague | 3293046 | 2014-11-18 06:51:16 -0500 | [diff] [blame] | 214 | -------------------------- |
Sean M. Collins | 09e550c | 2014-10-21 11:40:08 -0400 | [diff] [blame] | 215 | |
| 216 | Shutting down OpenStack is now as simple as running the included |
| 217 | ``unstack.sh`` script: |
| 218 | |
| 219 | :: |
| 220 | |
| 221 | ./unstack.sh |
| 222 | |
| 223 | A more aggressive cleanup can be performed using ``clean.sh``. It |
| 224 | removes certain troublesome packages and attempts to leave the system in |
| 225 | a state where changing the database or queue manager can be reliably |
| 226 | performed. |
| 227 | |
| 228 | :: |
| 229 | |
| 230 | ./clean.sh |
| 231 | |
| 232 | Sometimes running instances are not cleaned up. DevStack attempts to do |
| 233 | this when it runs but there are times it needs to still be done by hand: |
| 234 | |
| 235 | :: |
| 236 | |
| 237 | sudo rm -rf /etc/libvirt/qemu/inst* |
| 238 | sudo virsh list | grep inst | awk '{print $1}' | xargs -n1 virsh destroy |
| 239 | |
Matt Riedemann | ec82852 | 2019-01-30 20:48:18 -0500 | [diff] [blame] | 240 | Going further |
| 241 | ============= |
Sean M. Collins | 09e550c | 2014-10-21 11:40:08 -0400 | [diff] [blame] | 242 | |
| 243 | Additional Users |
Sean Dague | 3293046 | 2014-11-18 06:51:16 -0500 | [diff] [blame] | 244 | ---------------- |
Sean M. Collins | 09e550c | 2014-10-21 11:40:08 -0400 | [diff] [blame] | 245 | |
| 246 | DevStack creates two OpenStack users (``admin`` and ``demo``) and two |
Peter Stachowski | 9a80892 | 2015-04-08 19:48:09 +0000 | [diff] [blame] | 247 | projects (also ``admin`` and ``demo``). ``admin`` is exactly what it |
Sean M. Collins | 09e550c | 2014-10-21 11:40:08 -0400 | [diff] [blame] | 248 | sounds like, a privileged administrative account that is a member of |
Peter Stachowski | 9a80892 | 2015-04-08 19:48:09 +0000 | [diff] [blame] | 249 | both the ``admin`` and ``demo`` projects. ``demo`` is a normal user |
| 250 | account that is only a member of the ``demo`` project. Creating |
Sean M. Collins | 09e550c | 2014-10-21 11:40:08 -0400 | [diff] [blame] | 251 | additional OpenStack users can be done through the dashboard, sometimes |
| 252 | it is easier to do them in bulk from a script, especially since they get |
| 253 | blown away every time ``stack.sh`` runs. The following steps are ripe |
| 254 | for scripting: |
| 255 | |
| 256 | :: |
| 257 | |
| 258 | # Get admin creds |
| 259 | . openrc admin admin |
Sean Dague | 3293046 | 2014-11-18 06:51:16 -0500 | [diff] [blame] | 260 | |
Peter Stachowski | 9a80892 | 2015-04-08 19:48:09 +0000 | [diff] [blame] | 261 | # List existing projects |
| 262 | openstack project list |
Sean M. Collins | 09e550c | 2014-10-21 11:40:08 -0400 | [diff] [blame] | 263 | |
| 264 | # List existing users |
Peter Stachowski | 9a80892 | 2015-04-08 19:48:09 +0000 | [diff] [blame] | 265 | openstack user list |
Sean M. Collins | 09e550c | 2014-10-21 11:40:08 -0400 | [diff] [blame] | 266 | |
Peter Stachowski | 9a80892 | 2015-04-08 19:48:09 +0000 | [diff] [blame] | 267 | # Add a user and project |
Sean M. Collins | 09e550c | 2014-10-21 11:40:08 -0400 | [diff] [blame] | 268 | NAME=bob |
Balagopal | 7ed812c | 2016-03-01 04:43:31 +0000 | [diff] [blame] | 269 | PASSWORD=BigSecret |
Peter Stachowski | 9a80892 | 2015-04-08 19:48:09 +0000 | [diff] [blame] | 270 | PROJECT=$NAME |
| 271 | openstack project create $PROJECT |
| 272 | openstack user create $NAME --password=$PASSWORD --project $PROJECT |
| 273 | openstack role add Member --user $NAME --project $PROJECT |
| 274 | # The Member role is created by stack.sh |
Mike Perez | c271b3e | 2016-10-03 16:00:33 -0700 | [diff] [blame] | 275 | # openstack role assignment list |
Sean M. Collins | 09e550c | 2014-10-21 11:40:08 -0400 | [diff] [blame] | 276 | |
| 277 | Swift |
Sean Dague | 3293046 | 2014-11-18 06:51:16 -0500 | [diff] [blame] | 278 | ----- |
Sean M. Collins | 09e550c | 2014-10-21 11:40:08 -0400 | [diff] [blame] | 279 | |
Shilla Saebi | 2ed09d8 | 2015-04-21 15:02:13 -0400 | [diff] [blame] | 280 | Swift, OpenStack Object Storage, requires a significant amount of resources |
Sean Dague | a6db5e3 | 2015-08-04 06:23:28 -0400 | [diff] [blame] | 281 | and is disabled by default in DevStack. The support in DevStack is geared |
Shilla Saebi | 2ed09d8 | 2015-04-21 15:02:13 -0400 | [diff] [blame] | 282 | toward a minimal installation but can be used for testing. To implement a |
| 283 | true multi-node test of swift, additional steps will be required. Enabling it is as |
Sean M. Collins | 09e550c | 2014-10-21 11:40:08 -0400 | [diff] [blame] | 284 | simple as enabling the ``swift`` service in ``local.conf``: |
| 285 | |
| 286 | :: |
| 287 | |
| 288 | enable_service s-proxy s-object s-container s-account |
| 289 | |
Shilla Saebi | 2ed09d8 | 2015-04-21 15:02:13 -0400 | [diff] [blame] | 290 | Swift, OpenStack Object Storage, will put its data files in ``SWIFT_DATA_DIR`` (default |
Sean M. Collins | 09e550c | 2014-10-21 11:40:08 -0400 | [diff] [blame] | 291 | ``/opt/stack/data/swift``). The size of the data 'partition' created |
| 292 | (really a loop-mounted file) is set by ``SWIFT_LOOPBACK_DISK_SIZE``. The |
JordanP | a6dfe81 | 2014-11-20 18:06:23 +0100 | [diff] [blame] | 293 | Swift config files are located in ``SWIFT_CONF_DIR`` (default |
Sean M. Collins | 09e550c | 2014-10-21 11:40:08 -0400 | [diff] [blame] | 294 | ``/etc/swift``). All of these settings can be overridden in (wait for |
| 295 | it...) ``local.conf``. |
| 296 | |
| 297 | Volumes |
Sean Dague | 3293046 | 2014-11-18 06:51:16 -0500 | [diff] [blame] | 298 | ------- |
Sean M. Collins | 09e550c | 2014-10-21 11:40:08 -0400 | [diff] [blame] | 299 | |
| 300 | DevStack will automatically use an existing LVM volume group named |
| 301 | ``stack-volumes`` to store cloud-created volumes. If ``stack-volumes`` |
Matt Riedemann | 4a3cc1c | 2019-01-30 20:50:47 -0500 | [diff] [blame] | 302 | doesn't exist, DevStack will set up a loop-mounted file to contain |
| 303 | it. If the default size is insufficient for the number and size of volumes |
| 304 | required, it can be overridden by setting ``VOLUME_BACKING_FILE_SIZE`` in |
| 305 | ``local.conf`` (sizes given in ``truncate`` compatible format, e.g. ``24G``). |
Sean M. Collins | 09e550c | 2014-10-21 11:40:08 -0400 | [diff] [blame] | 306 | |
| 307 | ``stack-volumes`` can be pre-created on any physical volume supported by |
| 308 | Linux's LVM. The name of the volume group can be changed by setting |
Jordan Pittier | f5069f3 | 2016-11-08 12:10:12 +0100 | [diff] [blame] | 309 | ``VOLUME_GROUP_NAME`` in ``localrc``. ``stack.sh`` deletes all logical |
| 310 | volumes in ``VOLUME_GROUP_NAME`` that begin with ``VOLUME_NAME_PREFIX`` as |
Sean M. Collins | 09e550c | 2014-10-21 11:40:08 -0400 | [diff] [blame] | 311 | part of cleaning up from previous runs. It is recommended to not use the |
Jordan Pittier | f5069f3 | 2016-11-08 12:10:12 +0100 | [diff] [blame] | 312 | root volume group as ``VOLUME_GROUP_NAME``. |
Sean M. Collins | 09e550c | 2014-10-21 11:40:08 -0400 | [diff] [blame] | 313 | |
| 314 | The details of creating the volume group depends on the server hardware |
| 315 | involved but looks something like this: |
| 316 | |
| 317 | :: |
| 318 | |
| 319 | pvcreate /dev/sdc |
| 320 | vgcreate stack-volumes /dev/sdc |
| 321 | |
| 322 | Syslog |
Sean Dague | 3293046 | 2014-11-18 06:51:16 -0500 | [diff] [blame] | 323 | ------ |
Sean M. Collins | 09e550c | 2014-10-21 11:40:08 -0400 | [diff] [blame] | 324 | |
| 325 | DevStack is capable of using ``rsyslog`` to aggregate logging across the |
| 326 | cluster. It is off by default; to turn it on set ``SYSLOG=True`` in |
| 327 | ``local.conf``. ``SYSLOG_HOST`` defaults to ``HOST_IP``; on the compute |
| 328 | nodes it must be set to the IP of the cluster controller to send syslog |
| 329 | output there. In the example above, add this to the compute node |
| 330 | ``local.conf``: |
| 331 | |
| 332 | :: |
| 333 | |
| 334 | SYSLOG_HOST=192.168.42.11 |
| 335 | |
| 336 | Using Alternate Repositories/Branches |
Sean Dague | 3293046 | 2014-11-18 06:51:16 -0500 | [diff] [blame] | 337 | ------------------------------------- |
Sean M. Collins | 09e550c | 2014-10-21 11:40:08 -0400 | [diff] [blame] | 338 | |
| 339 | The git repositories for all of the OpenStack services are defined in |
| 340 | ``stackrc``. Since this file is a part of the DevStack package changes |
| 341 | to it will probably be overwritten as updates are applied. Every setting |
| 342 | in ``stackrc`` can be redefined in ``local.conf``. |
| 343 | |
| 344 | To change the repository or branch that a particular OpenStack service |
| 345 | is created from, simply change the value of ``*_REPO`` or ``*_BRANCH`` |
| 346 | corresponding to that service. |
| 347 | |
| 348 | After making changes to the repository or branch, if ``RECLONE`` is not |
| 349 | set in ``localrc`` it may be necessary to remove the corresponding |
| 350 | directory from ``/opt/stack`` to force git to re-clone the repository. |
| 351 | |
Shilla Saebi | 2ed09d8 | 2015-04-21 15:02:13 -0400 | [diff] [blame] | 352 | For example, to pull nova, OpenStack Compute, from a proposed release candidate |
| 353 | in the primary nova repository: |
Sean M. Collins | 09e550c | 2014-10-21 11:40:08 -0400 | [diff] [blame] | 354 | |
| 355 | :: |
| 356 | |
| 357 | NOVA_BRANCH=rc-proposed |
| 358 | |
Shilla Saebi | 2ed09d8 | 2015-04-21 15:02:13 -0400 | [diff] [blame] | 359 | To pull glance, OpenStack Image service, from an experimental fork: |
Sean M. Collins | 09e550c | 2014-10-21 11:40:08 -0400 | [diff] [blame] | 360 | |
| 361 | :: |
| 362 | |
| 363 | GLANCE_BRANCH=try-something-big |
| 364 | GLANCE_REPO=https://github.com/mcuser/glance.git |
| 365 | |
| 366 | Notes stuff you might need to know |
Sean Dague | 3293046 | 2014-11-18 06:51:16 -0500 | [diff] [blame] | 367 | ================================== |
Sean M. Collins | 09e550c | 2014-10-21 11:40:08 -0400 | [diff] [blame] | 368 | |
Sean M. Collins | 09e550c | 2014-10-21 11:40:08 -0400 | [diff] [blame] | 369 | Set MySQL Password |
Sean Dague | 3293046 | 2014-11-18 06:51:16 -0500 | [diff] [blame] | 370 | ------------------ |
Sean M. Collins | 09e550c | 2014-10-21 11:40:08 -0400 | [diff] [blame] | 371 | |
| 372 | If you forgot to set the root password you can do this: |
| 373 | |
| 374 | :: |
| 375 | |
| 376 | mysqladmin -u root -pnova password 'supersecret' |
Zhenzan Zhou | e1f8796 | 2015-09-08 16:49:52 +0800 | [diff] [blame] | 377 | |
| 378 | Live Migration |
| 379 | -------------- |
| 380 | |
| 381 | In order for live migration to work with the default live migration URI:: |
| 382 | |
| 383 | [libvirt] |
| 384 | live_migration_uri = qemu+ssh://stack@%s/system |
| 385 | |
| 386 | SSH keys need to be exchanged between each compute node: |
| 387 | |
| 388 | 1. The SOURCE root user's public RSA key (likely in /root/.ssh/id_rsa.pub) |
| 389 | needs to be in the DESTINATION stack user's authorized_keys file |
| 390 | (~stack/.ssh/authorized_keys). This can be accomplished by manually |
| 391 | copying the contents from the file on the SOURCE to the DESTINATION. If |
| 392 | you have a password configured for the stack user, then you can use the |
| 393 | following command to accomplish the same thing:: |
| 394 | |
| 395 | ssh-copy-id -i /root/.ssh/id_rsa.pub stack@DESTINATION |
| 396 | |
| 397 | 2. The DESTINATION host's public ECDSA key (/etc/ssh/ssh_host_ecdsa_key.pub) |
| 398 | needs to be in the SOURCE root user's known_hosts file |
| 399 | (/root/.ssh/known_hosts). This can be accomplished by running the |
| 400 | following on the SOURCE machine (hostname must be used):: |
| 401 | |
| 402 | ssh-keyscan -H DEST_HOSTNAME | sudo tee -a /root/.ssh/known_hosts |
| 403 | |
Hidekazu Nakamura | 541617b | 2016-11-09 15:27:19 +0900 | [diff] [blame] | 404 | 3. Verify that login via ssh works without a password:: |
| 405 | |
Nobuhiro MIKI | 110b9a9 | 2021-04-01 11:00:25 +0900 | [diff] [blame] | 406 | ssh -i /root/.ssh/id_rsa stack@DESTINATION |
Hidekazu Nakamura | 541617b | 2016-11-09 15:27:19 +0900 | [diff] [blame] | 407 | |
Zhenzan Zhou | e1f8796 | 2015-09-08 16:49:52 +0800 | [diff] [blame] | 408 | In essence, this means that every compute node's root user's public RSA key |
| 409 | must exist in every other compute node's stack user's authorized_keys file and |
| 410 | every compute node's public ECDSA key needs to be in every other compute |
| 411 | node's root user's known_hosts file. Please note that if the root or stack |
| 412 | user does not have a SSH key, one can be generated using:: |
| 413 | |
| 414 | ssh-keygen -t rsa |
| 415 | |
| 416 | The above steps are necessary because libvirtd runs as root when the |
| 417 | live_migration_uri uses the "qemu:///system" family of URIs. For more |
| 418 | information, see the `libvirt documentation`_. |
| 419 | |
| 420 | .. _libvirt documentation: https://libvirt.org/drvqemu.html#securitydriver |