【未解決】ちょっと古い(v.1.2.0)のRancher を Version1.5.3にアップしたら、動かなくなった。

ちょっと古い(v.1.2.0)のRancher を Versionアップしたら、動かなくなった。
作り直してもいいのですが、せっかくなのでいろいろ見てみました。

# 1. アップデート前

v1.2.0で稼働は確認済

# 2. アップデート

アップデートした手順は、以下
Rancher v1.2.0へのアップデートについて - Qiita
http://qiita.com/cyberblack28/items/05170d68bd3de56d6382

# 3. アップデート後

画面は真っ白

# 4. Rancherサーバーコンテナーがどうなっているか確認する。

## 4-1. 外からRancherサーバーコンテナのログを見る

```lang:bash
$ sudo docker logs 8446ed857c11
 ～～～～中略～～～～
DEFAULT_CATTLE_WEBHOOK_SERVICE_EXECUTE=true
07:50:21.701 [main] INFO  ConsoleStatus - Loading configuration
2017-04-06 07:50:26,522 INFO    [main] [ConsoleStatus] Starting DB migration 
$ 
```
DBのマイグレーションはスタートしているようだ。
それ以上のエラーは出てない。問題なさそう。

## 4-2. ログインしてプロセス確認

```lang:bash
sudo docker exec -it 8446ed857c11 /bin/bash
root@8446ed857c11:/var/lib/cattle/logs# ps axww
  PID TTY      STAT   TIME COMMAND
    1 ?        Ss     0:00 /usr/bin/s6-svscan /service
    7 ?        S      0:00 s6-supervise mysql
    8 ?        S      0:00 s6-supervise cattle
    9 ?        Ssl    0:56 java -XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled -Xms128m -Xmx4g -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/var/lib/cattle/logs -Dlogback.bootstrap.level=WARN -cp /usr/share/cattle/d0f45a1e258116e91e59c971546c04fe:/usr/share/cattle/d0f45a1e258116e91e59c971546c04fe/etc/cattle io.cattle.platform.launcher.Main
   25 ?        Ssl    0:00 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib/mysql/plugin --user=mysql --log-error=/var/log/mysql/error.log --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/run/mysqld/mysqld.sock --port=3306
  131 ?        Ss     0:00 /bin/bash
  164 ?        R+     0:00 ps axww
```
プロセス良し。起動している。

## 4-3. ポート確認

```lang:bash
root@8446ed857c11:/var/lib/cattle/logs# netstat -a
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 *:mysql                 *:*                     LISTEN
tcp        0      0 localhost:41910         localhost:mysql         ESTABLISHED
tcp        0      0 localhost:mysql         localhost:41910         ESTABLISHED
tcp        0      0 localhost:41960         localhost:mysql         ESTABLISHED
tcp        0      0 localhost:mysql         localhost:41960         ESTABLISHED
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags       Type       State         I-Node   Path
unix  2      [ ACC ]     STREAM     LISTENING     487228   /var/run/mysqld/mysqld.sock
unix  2      [ ]         STREAM     CONNECTED     496846
```
ポート、あれ？？8080開いてない。。

## 4-4. cattleのログを見る。

```lang:bash
root@8446ed857c11:/# cd /var/lib/cattle/logs/
root@8446ed857c11:/# less cattle-debug.log
2017-04-06 08:11:03,126 WARN  [:] [] [] [] [main           ] [nnotationConfigWebApplicationContext] Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'liquibaseCore' defined in io.cattle.platform.app.Sy
stemConfig: Invocation of init method failed; nested exception is liquibase.exception.LockException: Could not acquire change log lock.  Currently locked by 254a9016f30d (172.17.0.2) since 4/6/17 7:32 AM
2017-04-06 08:11:03,233 ERROR [:] [] [] [] [main           ] [o.s.web.context.ContextLoader       ] Context initialization failed org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'liquibaseCore' defined in io.cattle.platform.app.SystemConfig: Invocation of init method failed; nested
 exception is liquibase.exception.LockException: Could not acquire change log lock.  Currently locked by 254a9016f30d (172.17.0.2) since 4/6/17 7:32 AM
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1578) ~[spring-beans-4.3.2.RELEASE.jar:4.3.2.RELEASE]
```
エラーでてる。。

# 5. ググった。
ヒットしたのは以下。
liquibase.exception.LockException: Could not acquire change log lock. Currently locked by b4f9bbee3bde (fe80:0:0:0:42:acff:fe11:2%14) since 9/26/16 10:36 AM · Issue #6057 · rancher/rancher
https://github.com/rancher/rancher/issues/6057
どうもこれのようだ。

原因はこれ。
FAQS about Rancher Server
http://docs.rancher.com/rancher/v1.2/en/faqs/server/#why-is-rancher-server-frozen-or-why-could-my-upgrade-have-failed

MySQLのロックを外してみる。

# 6. MySQL の中身を確認

```lang:bash
mysql> select * from DATABASECHANGELOG;
+------------------+---------------------------+-----------------+---------------------+---------------+----------+------------------------------------+---------------------------------------------------+----------+------+-----------+
| ID               | AUTHOR                    | FILENAME        | DATEEXECUTED        | ORDEREXECUTED | EXECTYPE | MD5SUM                             | DESCRIPTION                                       | COMMENTS | TAG  | LIQUIBASE |
+------------------+---------------------------+-----------------+---------------------+---------------+----------+------------------------------------+---------------------------------------------------+----------+------+-----------+
| dump1            | darren (generated)        | db/core-001.xml | 2015-09-15 23:21:58 |             1 | EXECUTED | 7:7804898bf856df0c94c17a1b6124775d | createTable                                       |          | NULL | 3.1.0     |
| dump2            | darren (generated)        | db/core-001.xml | 2015-09-15 23:21:58 |             2 | EXECUTED | 7:b15f282d3fc93ca53935cbd47997f265 | createTable                                       |          | NULL | 3.1.0     |
| dump3            | darren (generated)        | db/core-001.xml | 2015-09-15 23:21:58 |             3 | EXECUTED | 7:f3466a18a83797c81a53c3f44422b61d | createTable                                       |          | NULL | 3.1.0     |
| dump4            | darren (generated)        | db/core-001.xml | 2015-09-15 23:21:58 |             4 | EXECUTED | 7:1374399fc3af8bd4098d25f05ca213bf | createTable                                       |          | NULL | 3.1.0     |
　～～～～だーっとマイグレーションログがでる(後略)～～～～
```

```lang:bash
mysql> select * from DATABASECHANGELOGLOCK;
+----+--------+---------------------+---------------------------+
| ID | LOCKED | LOCKGRANTED         | LOCKEDBY                  |
+----+--------+---------------------+---------------------------+
|  1 |       | 2017-04-06 07:32:11 | 254a9016f30d (172.17.0.2) |
+----+--------+---------------------+---------------------------+
1 row in set (0.00 sec)
```
たしかに、何かロックされるっぽい。

# 7. ロックを解除する

FAQS about Rancher Server
http://docs.rancher.com/rancher/v1.5/en/faqs/server/#why-is-rancher-server-frozen-or-why-could-my-upgrade-have-failed
のインストラクションに沿って、ロックを解除してみる。

`※ロックの解除は、マイグレーションが終了していない可能性もあるので無闇に解除してはいけません。`

```
root@8446ed857c11:/# mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 8
 ～～～～中略～～～
mysql> use cattle
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> select * from DATABASECHANGELOGLOCK;
+----+--------+---------------------+---------------------------+
| ID | LOCKED | LOCKGRANTED         | LOCKEDBY                  |
+----+--------+---------------------+---------------------------+
|  1 |       | 2017-04-06 07:32:11 | 254a9016f30d (172.17.0.2) |
+----+--------+---------------------+---------------------------+
1 row in set (0.00 sec)

mysql> update DATABASECHANGELOGLOCK set LOCKED="", LOCKGRANTED=null, LOCKEDBY=null where ID=1;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> select * from DATABASECHANGELOGLOCK;
+----+--------+-------------+----------+
| ID | LOCKED | LOCKGRANTED | LOCKEDBY |
+----+--------+-------------+----------+
|  1 |        | NULL        | NULL     |
+----+--------+-------------+----------+
1 row in set (0.00 sec)

mysql> quit
Bye
```

どうかな？

# 8. 結果

動きませんでした。
というか、もっと酷くなりました。

DB のマイグレーションが開始後に、

```
2017-04-06 09:05:51,761 INFO    [main] [ConsoleStatus] Starting DB migration
2017-04-06 09:05:54,063 ERROR   [main] [liquibase] classpath:db/changelog.xml: db/core-113.xml::dump2::alena (generated): Change Set db/core-113.xml::dump2::alena (generated) failed.  Error: Error executing SQL ALTER TABLE cattle.instance ADD CONSTRAINT fk_instance__service_id FOREIGN KEY (service_id) REFERENCES cattle.service (id) ON UPDATE NO ACTION ON DELETE NO ACTION: (conn:7) Can't create table 'cattle.#sql-19_7' (errno: -1)
Query is : ALTER TABLE cattle.instance ADD CONSTRAINT fk_instance__service_id FOREIGN KEY (service_id) REFERENCES cattle.service (id) ON UPDATE NO ACTION ON DELETE NO ACTION liquibase.exception.DatabaseException: Error executing SQL ALTER TABLE cattle.instance ADD CONSTRAINT fk_instance__service_id FOREIGN KEY (service_id) REFERENCES cattle.service (id) ON UPDATE NO ACTION ON DELETE NO ACTION: (conn:7) Can't create table 'cattle.#sql-19_7' (errno: -1)
```

と言われて、 「`cattle.#sql-19_7` などというテーブルはない」というエラーが出て、
マイグレーションプロセスが落ちてしまい、コンテナーが再起動、
そして、また、マイグレーションが始まって、エラーでマイグレーションプロセスが落ちて、
コンテナーが再起動するというエンドレス状態に陥りました。

# 9. どうしたか

残念ではありますが、諦めました...。
Rancherサーバー側をアップデートする前に、インフラコンテナーをアップデートしてしまったのも良くなかったようです。

他の環境では、v1.2.0 から問題なくアップデートできているのを確認しています。こちらは、Rancher サーバーを先にアップデートしてから、インフラコンテナーをアップデートしました。

アップデートの順番には気をつける必要がありそうです。