rolling_upgrade.asciidoc 8.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248
  1. [[rolling-upgrades]]
  2. == Rolling upgrades
  3. A rolling upgrade allows an {es} cluster to be upgraded one node at
  4. a time so upgrading does not interrupt service. Running multiple versions of
  5. {es} in the same cluster beyond the duration of an upgrade is
  6. not supported, as shards cannot be replicated from upgraded nodes to nodes
  7. running the older version.
  8. We strongly recommend that when you upgrade you divide your cluster's nodes
  9. into the following two groups and upgrade the groups in this order:
  10. . Nodes that are not <<master-node,master-eligible>>. You can retrieve a list
  11. of these nodes with `GET /_nodes/_all,master:false/_none` or by finding all the
  12. nodes configured with `node.master: false`.
  13. .. If you are using data tiers, or a hot-warm-cold architecture based on node
  14. attributes, you should upgrade the nodes tier-by-tier, completing the upgrade
  15. of each tier before starting the next. Upgrade the frozen tier first, then the
  16. cold tier, then the warm tier, and finally the hot tier. This is to ensure ILM
  17. can continue to move shards between phases and ensure version
  18. compatibility. You can get the list of nodes from specific tiers by
  19. `GET /_nodes/data_frozen:true/_none`, `GET /_nodes/data_cold:true/_none` etc.
  20. .. If you are not using data tiers, you may upgrade the nodes within the group
  21. in any order.
  22. . Master-eligible nodes, which are the remaining nodes. You can retrieve a list
  23. of these nodes with `GET /_nodes/master:true`.
  24. Upgrading the nodes in this order ensures that the master-ineligible nodes are
  25. always running a version at least as new as the master-eligible nodes. Newer
  26. nodes can always join a cluster with an older master, but older nodes cannot
  27. always join a cluster with a newer master. By upgrading the master-eligible
  28. nodes last you ensure that all the master-ineligible nodes will be able to join
  29. the cluster whether the master-eligible nodes have been upgraded or not. If you
  30. upgrade any master-eligible nodes before the master-ineligible nodes then there
  31. is a risk that the older nodes will leave the cluster and will not be able to
  32. rejoin until they have been upgraded.
  33. Rolling upgrades are supported:
  34. include::{es-repo-dir}/upgrade.asciidoc[tag=rolling-upgrade-versions]
  35. Upgrading directly to {version} from 6.6 or earlier requires a
  36. <<restart-upgrade, full cluster restart>>.
  37. include::preparing_to_upgrade.asciidoc[]
  38. [discrete]
  39. === Upgrading your cluster
  40. To perform a rolling upgrade to {version}:
  41. . *Disable shard allocation*.
  42. +
  43. --
  44. include::disable-shard-alloc.asciidoc[]
  45. --
  46. . *Stop non-essential indexing and perform a flush.* (Optional)
  47. +
  48. --
  49. While you can continue indexing during the upgrade, shard recovery
  50. is much faster if you temporarily stop non-essential indexing and perform a
  51. <<indices-flush, flush>>.
  52. [source,console]
  53. --------------------------------------------------
  54. POST /_flush
  55. --------------------------------------------------
  56. --
  57. . *Temporarily stop the tasks associated with active {ml} jobs and {dfeeds}.* (Optional)
  58. +
  59. --
  60. include::close-ml.asciidoc[]
  61. --
  62. . [[upgrade-node]] *Shut down a single node*.
  63. +
  64. --
  65. include::shut-down-node.asciidoc[]
  66. --
  67. . *Upgrade the node you shut down.*
  68. +
  69. --
  70. include::upgrade-node.asciidoc[]
  71. include::set-paths-tip.asciidoc[]
  72. [[rolling-upgrades-bootstrapping]]
  73. NOTE: You should leave `cluster.initial_master_nodes` unset while performing a
  74. rolling upgrade. Each upgraded node is joining an existing cluster so there is
  75. no need for <<modules-discovery-bootstrap-cluster,cluster bootstrapping>>. You
  76. must configure <<built-in-hosts-providers,either `discovery.seed_hosts` or
  77. `discovery.seed_providers`>> on every node.
  78. --
  79. . *Upgrade any plugins.*
  80. +
  81. Use the `elasticsearch-plugin` script to install the upgraded version of each
  82. installed {es} plugin. All plugins must be upgraded when you upgrade
  83. a node.
  84. . If you use {es} {security-features} to define realms, verify that your realm
  85. settings are up-to-date. The format of realm settings changed in version 7.0, in
  86. particular, the placement of the realm type changed. See
  87. <<realm-settings,Realm settings>>.
  88. . *Start the upgraded node.*
  89. +
  90. --
  91. Start the newly-upgraded node and confirm that it joins the cluster by checking
  92. the log file or by submitting a `_cat/nodes` request:
  93. [source,console]
  94. --------------------------------------------------
  95. GET _cat/nodes
  96. --------------------------------------------------
  97. --
  98. . *Reenable shard allocation.*
  99. +
  100. --
  101. For data nodes, once the node has joined the cluster, remove the
  102. `cluster.routing.allocation.enable` setting to enable shard allocation and start
  103. using the node:
  104. [source,console]
  105. --------------------------------------------------
  106. PUT _cluster/settings
  107. {
  108. "persistent": {
  109. "cluster.routing.allocation.enable": null
  110. }
  111. }
  112. --------------------------------------------------
  113. --
  114. . *Wait for the node to recover.*
  115. +
  116. --
  117. Before upgrading the next node, wait for the cluster to finish shard allocation.
  118. You can check progress by submitting a <<cat-health,`_cat/health`>> request:
  119. [source,console]
  120. --------------------------------------------------
  121. GET _cat/health?v=true
  122. --------------------------------------------------
  123. Wait for the `status` column to switch to `green`. Once the node is `green`, all
  124. primary and replica shards have been allocated.
  125. [IMPORTANT]
  126. ====================================================
  127. During a rolling upgrade, primary shards assigned to a node running the new
  128. version cannot have their replicas assigned to a node with the old
  129. version. The new version might have a different data format that is
  130. not understood by the old version.
  131. If it is not possible to assign the replica shards to another node
  132. (there is only one upgraded node in the cluster), the replica
  133. shards remain unassigned and status stays `yellow`.
  134. In this case, you can proceed once there are no initializing or relocating shards
  135. (check the `init` and `relo` columns).
  136. As soon as another node is upgraded, the replicas can be assigned and the
  137. status will change to `green`.
  138. ====================================================
  139. Shards that were not <<indices-flush,flushed>> might take longer to
  140. recover. You can monitor the recovery status of individual shards by
  141. submitting a <<cat-recovery,`_cat/recovery`>> request:
  142. [source,console]
  143. --------------------------------------------------
  144. GET _cat/recovery
  145. --------------------------------------------------
  146. If you stopped indexing, it is safe to resume indexing as soon as
  147. recovery completes.
  148. --
  149. . *Repeat*
  150. +
  151. --
  152. When the node has recovered and the cluster is stable, repeat these steps
  153. for each node that needs to be updated. You can monitor the health of the cluster
  154. with a <<cat-health,`_cat/health`>> request:
  155. [source,console]
  156. --------------------------------------------------
  157. GET /_cat/health?v=true
  158. --------------------------------------------------
  159. And check which nodes have been upgraded with a <<cat-nodes,`_cat/nodes`>> request:
  160. [source,console]
  161. --------------------------------------------------
  162. GET /_cat/nodes?h=ip,name,version&v=true
  163. --------------------------------------------------
  164. --
  165. . *Restart machine learning jobs.*
  166. +
  167. --
  168. include::open-ml.asciidoc[]
  169. --
  170. [IMPORTANT]
  171. ====================================================
  172. During a rolling upgrade, the cluster continues to operate normally. However,
  173. any new functionality is disabled or operates in a backward compatible mode
  174. until all nodes in the cluster are upgraded. New functionality becomes
  175. operational once the upgrade is complete and all nodes are running the new
  176. version. Once that has happened, there's no way to return to operating in a
  177. backward compatible mode. Nodes running the previous version will not be
  178. allowed to join the fully-updated cluster.
  179. In the unlikely case of a network malfunction during the upgrade process that
  180. isolates all remaining old nodes from the cluster, you must take the old nodes
  181. offline and upgrade them to enable them to join the cluster.
  182. If you stop half or more of the master-eligible nodes all at once during the
  183. upgrade then the cluster will become unavailable, meaning that the upgrade is
  184. no longer a _rolling_ upgrade. If this happens, you should upgrade and restart
  185. all of the stopped master-eligible nodes to allow the cluster to form again, as
  186. if performing a <<restart-upgrade,full-cluster restart upgrade>>. It may also
  187. be necessary to upgrade all of the remaining old nodes before they can join the
  188. cluster after it re-forms.
  189. Similarly, if you run a testing/development environment with only one master
  190. node, the master node should be upgraded last. Restarting a single master node
  191. forces the cluster to be reformed. The new cluster will initially only have the
  192. upgraded master node and will thus reject the older nodes when they re-join the
  193. cluster. Nodes that have already been upgraded will successfully re-join the
  194. upgraded master.
  195. ====================================================