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