{"id":317578,"date":"2021-02-06T15:00:43","date_gmt":"2021-02-06T15:00:43","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=317578"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=317578","title":{"rendered":"Kafka\u0440\u0438\u0430\u043d\u0441\u043a\u0438\u0439 \u043f\u0435\u0440\u0435\u0435\u0437\u0434 \u0438\u043b\u0438 \u043a\u0430\u043a \u0440\u0430\u0441\u0448\u0435\u0432\u0435\u043b\u0438\u0442\u044c \u043f\u0430\u0440\u0442\u0438\u0446\u0438\u0438"},"content":{"rendered":"\n<div class=\"post__text post__text_v2\" id=\"post-content-body\">\n<h2>\u0412\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u0435<\/h2>\n<p>\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440! \u0420\u0430\u0431\u043e\u0442\u0430\u044e java \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u043e\u043c \u0432 \u043e\u0434\u043d\u043e\u0439 \u0444\u0438\u043d\u0430\u043d\u0441\u043e\u0432\u043e\u0439 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0438. \u0420\u0435\u0448\u0438\u043b \u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0441\u0432\u043e\u0439 \u0441\u043b\u0435\u0434 \u043d\u0430 \u0445\u0430\u0431\u0440\u0435 \u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043f\u0435\u0440\u0432\u0443\u044e \u0441\u0432\u043e\u044e \u0441\u0442\u0430\u0442\u044c\u044e. \u0412 \u0441\u0438\u043b\u0443 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0441 \u043d\u0430\u043b\u0438\u0447\u0438\u0435\u043c \u0434\u0435\u0432\u043e\u043f\u0441\u0435\u0440\u043e\u0432 \u043f\u0435\u0440\u0435\u0434\u043e \u043c\u043d\u043e\u0439 \u0431\u044b\u043b\u0430 \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0430 \u0437\u0430\u0434\u0430\u0447\u0430 \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u043a\u0430\u0444\u043a\u0438 \u0441 2.0 \u0434\u043e 2.6 \u0431\u0435\u0437 \u0434\u0430\u0443\u043d\u0442\u0430\u0439\u043c\u0430 \u0438 \u043f\u043e\u0442\u0435\u0440\u0438 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 (\u0441\u0430\u043c\u0438 \u043f\u043e\u043d\u0438\u043c\u0430\u0435\u0442\u0435, \u043d\u0438\u043a\u0442\u043e \u043d\u0435 \u043b\u044e\u0431\u0438\u0442, \u043a\u043e\u0433\u0434\u0430 \u0434\u0435\u043d\u0435\u0436\u043a\u0438 \u0437\u0430\u0432\u0438\u0441\u0430\u044e\u0442 \u0432 \u0432\u043e\u0437\u0434\u0443\u0445\u0435 \u0438\u043b\u0438 \u0433\u0434\u0435-\u0442\u043e \u0442\u0435\u0440\u044f\u044e\u0442\u0441\u044f). \u0425\u043e\u0447\u0443 \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u044d\u0442\u0438\u043c \u043e\u043f\u044b\u0442\u043e\u043c \u0441 \u0412\u0430\u043c\u0438 \u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u0438\u0432\u043d\u044b\u0439 \u0444\u0438\u0434\u0431\u0435\u043a. \u0418\u0442\u0430\u043a, \u0445\u0432\u0430\u0442\u0438\u0442 \u0432\u043e\u0434\u044b, \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u0441\u0440\u0430\u0437\u0443 \u043a \u0434\u0435\u043b\u0443.<\/p>\n<h2>\u0421\u0445\u0435\u043c\u0430 \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u0438<\/h2>\n<p>\u0417\u0430\u0434\u0430\u0447\u0430 \u0443\u0441\u043b\u043e\u0436\u043d\u044f\u043b\u0430\u0441\u044c \u0442\u0435\u043c, \u0447\u0442\u043e \u043d\u0430\u0434\u043e \u0431\u044b\u043b\u043e \u043c\u0438\u0433\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u043e \u0441\u0442\u0430\u0440\u044b\u0445 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u043e\u043a \u043d\u0430 \u043d\u043e\u0432\u044b\u0435, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0441 \u0442\u0435\u043c, \u0447\u0442\u043e\u0431\u044b \u0432\u044b\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0431\u0440\u043e\u043a\u0435\u0440\u0430, \u043f\u043e\u043c\u0435\u043d\u044f\u0442\u044c \u0431\u0438\u043d\u0430\u0440\u043d\u0438\u043a\u0438 \u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c, \u043c\u043d\u0435 \u043d\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u043b.<\/p>\n<p>\u041d\u0438\u0436\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0430 \u0441\u0445\u0435\u043c\u0430 \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u0438. \u0418\u043c\u0435\u0435\u043c 3 \u0431\u0440\u043e\u043a\u0435\u0440\u043e\u0432 \u043d\u0430 \u0441\u0442\u0430\u0440\u044b\u0445 \u0412\u041c, 3 \u0431\u0440\u043e\u043a\u0435\u0440\u043e\u0432 \u043d\u0430 \u043d\u043e\u0432\u044b\u0445 \u0412\u041c, \u0442\u0430\u043a\u0436\u0435 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0431\u0440\u043e\u043a\u0435\u0440\u0430 \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u0441\u0432\u043e\u0439 zookeeper.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/657\/797\/eda\/657797eda00d6b8c78a6676db5b3c1b5.jpg\" width=\"741\" height=\"379\"><figcaption><\/figcaption><\/figure>\n<h2>\u041f\u043b\u0430\u043d \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u0438<\/h2>\n<p>\u0414\u043b\u044f \u0442\u043e\u0433\u043e \u0447\u0442\u043e\u0431\u044b \u043d\u0430\u043c \u043c\u0438\u0433\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u044d\u0442\u043e\u0433\u043e \u043d\u0438\u043a\u0442\u043e \u043d\u0435 \u0437\u0430\u043c\u0435\u0442\u0438\u043b, \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f &#171;\u043d\u0435\u043c\u043d\u043e\u0433\u043e&#187; \u043f\u043e\u043f\u043e\u0442\u0435\u0442\u044c. \u041d\u0438\u0436\u0435 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d \u043e\u0431\u0449\u0438\u0439 \u043f\u043b\u0430\u043d. <\/p>\n<ol>\n<li>\n<p>\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0430\u0434\u0440\u0435\u0441\u0430 \u043d\u043e\u0432\u044b\u0445 \u0431\u0440\u043e\u043a\u0435\u0440\u043e\u0432<\/p>\n<\/li>\n<li>\n<p>\u041f\u0440\u043e\u0431\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f\u044b \u043c\u0435\u0436\u0434\u0443 \u0432\u0441\u0435\u043c\u0438 \u0438 \u0432\u0441\u044f<\/p>\n<\/li>\n<li>\n<p>\u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u0442\u044c \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u043d\u0430 \u043d\u043e\u0432\u044b\u0445 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u043a\u0430\u0445<\/p>\n<\/li>\n<li>\n<p>\u041f\u043e\u0434\u043d\u044f\u0442\u044c \u043d\u043e\u0432\u044b\u0439 \u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u0437\u0443\u043a\u0438\u043f\u0435\u0440\u043e\u0432 \u0438 \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0438\u0442\u044c \u0435\u0433\u043e \u0441\u043e \u0441\u0442\u0430\u0440\u044b\u043c<\/p>\n<\/li>\n<li>\n<p>\u041f\u043e\u0434\u043d\u044f\u0442\u044c \u043d\u043e\u0432\u044b\u0445 \u0431\u0440\u043e\u043a\u0435\u0440\u043e\u0432 \u043a\u0430\u0444\u043a\u0438<\/p>\n<\/li>\n<li>\n<p>\u041c\u0438\u0433\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u0441\u0435 \u043f\u0430\u0440\u0442\u0438\u0446\u0438\u0438 \u0441\u043e \u0441\u0442\u0430\u0440\u044b\u0445 \u0431\u0440\u043e\u043a\u0435\u0440\u043e\u0432 \u043d\u0430 \u043d\u043e\u0432\u044b\u0435<\/p>\n<\/li>\n<li>\n<p>\u041e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0441\u0442\u0430\u0440\u044b\u0435 \u0431\u0440\u043e\u043a\u0435\u0440\u044b \u043a\u0430\u0444\u043a\u0438 \u0438 \u0441\u0442\u0430\u0440\u044b\u0445 \u0437\u0443\u043a\u0438\u043f\u0435\u0440\u043e\u0432<\/p>\n<\/li>\n<li>\n<p>\u0423\u0431\u0440\u0430\u0442\u044c \u0438\u0437 \u043d\u043e\u0432\u044b\u0445 \u043a\u043e\u043d\u0444\u0438\u0433\u043e\u0432 \u0441\u0442\u0430\u0440\u044b\u0445 \u0431\u0440\u043e\u043a\u0435\u0440\u043e\u0432 \u0438 \u0437\u0443\u043a\u0438\u043f\u0435\u0440\u043e\u0432<\/p>\n<\/li>\n<\/ol>\n<p>\u0410 \u0442\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u0435\u0445\u0430\u043b\u0438 \u043f\u043e \u043f\u043e\u0440\u044f\u0434\u043a\u0443 \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0442\u044c \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043a\u0430\u0436\u0434\u044b\u0439 \u043f\u0443\u043d\u043a\u0442<\/p>\n<h2>\u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0431\u0440\u043e\u043a\u0435\u0440\u043e\u0432 \u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435<\/h2>\n<p>\u0421\u0430\u043c\u044b\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u043f\u0443\u043d\u043a\u0442. \u0412 \u043a\u043e\u0434\u0435 \u043a\u043b\u0438\u0435\u043d\u0442\u0430, \u0442\u0430\u043c \u0433\u0434\u0435 \u0431\u044b\u043b\u0438 \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u043d\u044b \u0430\u0434\u0440\u0435\u0441\u0430 \u0441\u0442\u0430\u0440\u044b\u0445 \u0431\u0440\u043e\u043a\u0435\u0440\u043e\u0432, \u0442\u0443\u0434\u0430 \u0436\u0435 \u0434\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u043d\u043e\u0432\u044b\u0445. \u0412 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e <strong>&#171;bootstrap.servers&#187;<\/strong>    <\/p>\n<details class=\"spoiler\">\n<summary>\u0421\u0442\u0440\u043e\u043a\u0430 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438<\/summary>\n<div class=\"spoiler__content\">\n<p><code>old-server1:9092,old-server2:9092,old-server3:9092,new-server4:9092,new-server5:9092,new-server6:9092<\/code><\/p>\n<\/div>\n<\/details>\n<h2>\u041f\u0440\u043e\u0431\u0438\u0442\u0438\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043e\u0432<\/h2>\n<p>\u041e\u0434\u043d\u043e \u0438\u0437 \u0441\u0430\u043c\u044b\u0445 \u043d\u0435\u043b\u044e\u0431\u0438\u043c\u044b\u0445 \u0437\u0430\u043d\u044f\u0442\u0438\u0439 &#8212; \u044d\u0442\u043e \u043f\u0440\u043e\u0431\u0438\u0442\u0438\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043e\u0432. \u0417\u0430\u044f\u0432\u043a\u0438 \u0441\u043e\u0433\u043b\u0430\u0441\u0443\u044e\u0442\u0441\u044f \u0434\u043e\u043b\u0433\u043e, \u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0442\u0441\u044f \u0435\u0449\u0435 \u0434\u043e\u043b\u044c\u0448\u0435. \u0414\u043e\u0441\u0442\u0443\u043f\u043e\u0432 \u043d\u0430\u043c \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u0437\u0430\u043a\u0430\u0437\u0430\u0442\u044c \u043d\u0435\u043c\u0430\u043b\u043e, \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0440\u0430\u0437\u0431\u0435\u0440\u0435\u043c\u0441\u044f \u043a\u0430\u043a\u0438\u0435 \u0438\u043c\u0435\u043d\u043d\u043e.<\/p>\n<ol>\n<li>\n<p>\u041a\u0430\u043a \u0432\u044b \u0443\u0436\u0435 \u0434\u043e\u0433\u0430\u0434\u0430\u043b\u0438\u0441\u044c \u043f\u043e \u0441\u0442\u0440\u043e\u043a\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0431\u0440\u043e\u043a\u0435\u0440\u043e\u0432, \u043d\u0430\u043c \u043d\u0443\u0436\u0435\u043d \u043f\u043e\u0440\u0442 9092 \u0432 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0438 \u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 -&gt; \u043d\u043e\u0432\u044b\u0435 \u0431\u0440\u043e\u043a\u0435\u0440\u044b \u043a\u0430\u0444\u043a\u0438 (\u0432 \u0441\u0443\u043c\u043c\u0435 3 \u0434\u043e\u0441\u0442\u0443\u043f\u0430)<\/p>\n<\/li>\n<li>\n<p>\u042d\u0442\u043e\u0442 \u0436\u0435 \u043f\u043e\u0440\u0442 \u0434\u043b\u044f \u041d\u043e\u0432\u044b\u0435 \u0431\u0440\u043e\u043a\u0435\u0440\u044b &lt;&#8212;-&gt; \u0421\u0442\u0430\u0440\u044b\u0435 \u0431\u0440\u043e\u043a\u0435\u0440\u044b (+18 \u0434\u043e\u0441\u0442\u0443\u043f\u043e\u0432)<\/p>\n<\/li>\n<li>\n<p>\u0412\u0441\u0435 \u0442\u043e\u0442 \u0436\u0435 \u043f\u043e\u0440\u0442 9092 \u043c\u0435\u0436\u0434\u0443 \u043a\u0430\u0436\u0434\u044b\u043c \u043d\u043e\u0432\u044b\u043c \u0431\u0440\u043e\u043a\u0435\u0440\u043e\u043c (+6 \u0434\u043e\u0441\u0442\u0443\u043f\u043e\u0432)<\/p>\n<\/li>\n<li>\n<p>\u0410\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u044b\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u044b \u0438\u0437 \u043f\u0443\u043d\u043a\u0442\u043e\u0432 2 \u0438 3 \u0434\u043b\u044f \u043f\u043e\u0440\u0442\u043e\u0432 \u0437\u0443\u043a\u0438\u043f\u0435\u0440\u043e\u0432: 2181, 2888, 3888 ( (18+6)*3 = 72)<\/p>\n<\/li>\n<\/ol>\n<p>\u0418\u0442\u043e\u0433\u043e: 99 \u0434\u043e\u0441\u0442\u0443\u043f\u043e\u0432. \u041f\u043e\u043b\u0443\u0447\u0438\u0442\u0435 \u0438 \u0440\u0430\u0441\u043f\u0438\u0448\u0438\u0442\u0435\u0441\u044c! \u0410 \u043f\u043e\u0442\u043e\u043c \u0435\u0449\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u0432\u0441\u0435. <\/p>\n<details class=\"spoiler\">\n<summary><\/summary>\n<div class=\"spoiler__content\">\n<p>\u043e\u0431\u0438\u0434\u043d\u043e \u0447\u0442\u043e \u0434\u043e 100 \u043d\u0435 \u0434\u043e\u0442\u044f\u043d\u0443\u043b\u0438, \u0431\u044b\u043b\u043e \u0431\u044b \u043f\u043e\u0441\u043e\u043b\u0438\u0434\u043d\u0435\u0435<\/p>\n<\/div>\n<\/details>\n<p>\u041a\u043e\u0433\u0434\u0430 \u043c\u044b \u043f\u0440\u043e\u0448\u043b\u0438 \u0447\u0435\u0440\u0435\u0437 \u044d\u0442\u0438 \u0441\u0442\u0440\u0430\u0434\u0430\u043d\u0438\u044f \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u043b\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u044b, \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0430\u0435\u043c \u043a \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0435 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b.<\/p>\n<h2>\u0418\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u043d\u043e\u0432\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430<\/h2>\n<p>\u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f kafka \u043d\u0430 \u043d\u043e\u0432\u044b\u0445 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u043a\u0430\u0445<\/p>\n<p>\u0414\u0430\u043b\u0435\u0435 \u043e\u0447\u0435\u043d\u044c \u0432\u0430\u0436\u043d\u044b\u0439 \u043f\u0443\u043d\u043a\u0442 &#8212; \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u0442\u044c \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e kafka. \u0410 \u0438\u043c\u0435\u043d\u043d\u043e, \u0432 \u0444\u0430\u0439\u043b\u0435 <strong>\/etc\/security\/limits.conf<\/strong> \u0434\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u0441\u0442\u0440\u043e\u043a\u0438 <\/p>\n<pre><code class=\"bash\">kafka hard nofile 262144 kafka soft nofile 262144<\/code><\/pre>\n<p>\u0415\u0441\u043b\u0438 \u043c\u044b \u044d\u0442\u043e\u0433\u043e \u043d\u0435 \u0441\u0434\u0435\u043b\u0430\u0435\u043c, \u0442\u043e \u044d\u0442\u043e \u0433\u0440\u043e\u0437\u0438\u0442 \u043d\u0430\u043c \u0432\u043d\u0435\u0437\u0430\u043f\u043d\u044b\u043c \u043f\u0430\u0434\u0435\u043d\u0438\u0435\u043c \u0431\u0440\u043e\u043a\u0435\u0440\u0430, \u0442\u0430\u043a \u043a\u0430\u043a \u043a\u0430\u0444\u043a\u0430 \u043f\u043e \u0441\u0432\u043e\u0435\u0439 \u043f\u0440\u0438\u0440\u043e\u0434\u0435 \u043b\u044e\u0431\u0438\u0442 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0442\u044c \u043c\u043d\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u043e\u0432, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0430\u0434\u043e \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u0442\u044c\u0441\u044f \u043a \u0435\u0435 \u0430\u043f\u043f\u0435\u0442\u0438\u0442\u0430\u043c.<\/p>\n<p>\u0427\u0435\u0441\u0442\u043d\u043e \u0433\u043e\u0432\u043e\u0440\u044f, \u0447\u0438\u0441\u043b\u043e 262144, \u0432\u0437\u044f\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u043d\u0430 \u0441\u0442\u0430\u0440\u043e\u043c \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435 \u0431\u044b\u043b\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e \u0442\u0430\u043a\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 (\u0438\u0441\u0442\u043e\u0440\u0438\u0447\u0435\u0441\u043a\u0438 \u0441\u043b\u043e\u0436\u0438\u043b\u043e\u0441\u044c). \u0425\u043e\u0442\u044f \u0443 \u043d\u0430\u0441 \u043a\u0430\u0444\u043a\u0430 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u043d\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 10 \u0442\u044b\u0441\u044f\u0447 \u0444\u0430\u0439\u043b\u043e\u0432, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0440\u043e\u0432\u0435\u0441\u0442\u0438 \u0430\u043d\u0430\u043b\u0438\u0437 \u0438 \u0432\u044b\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0435\u0435.<\/p>\n<\/p>\n<p>\u0414\u0430\u043b\u0435\u0435 \u043d\u0430\u043c \u043d\u0430\u0434\u043e \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e \u0441\u0440\u0435\u0434\u044b \u043a java<\/p>\n<p>\u0432 \u0444\u0430\u0439\u043b \/home\/kafka\/.bash_profile \u0434\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c<\/p>\n<pre><code class=\"bash\">export JAVA_HOME=\/opt\/java export PATH=JAVA_HOME\/bin:PATH<\/code><\/pre>\n<p>\u0421\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0443 \u0432\u0430\u0441 \u0434\u043e\u043b\u0436\u043d\u0430 \u043b\u0435\u0436\u0430\u0442\u044c jre \u0432 \u043f\u0430\u043f\u043a\u0435 \/opt\/java<\/p>\n<p>\u0414\u0430\u043b\u0435\u0435 \u0440\u0430\u0441\u043a\u0438\u0434\u044b\u0432\u0430\u0435\u043c \u043f\u0430\u043f\u043a\u0438 \u043f\u043e \u043d\u0443\u0436\u043d\u044b\u043c \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044f\u043c \u0438 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u043f\u0440\u0430\u0432\u0430<\/p>\n<p>\u041d\u0438\u0436\u0435 \u043e\u043f\u0438\u0441\u0430\u043d \u0441\u043a\u0440\u0438\u043f\u0442, \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u044e\u0449\u0438\u0439, \u0442\u043e \u0447\u0442\u043e \u044f \u043e\u043f\u0438\u0441\u0430\u043b \u0432\u044b\u0448\u0435.  \u0415\u0433\u043e \u043d\u0430\u0434\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u043c \u043d\u043e\u0432\u043e\u043c \u0431\u0440\u043e\u043a\u0435\u0440\u0435.<\/p>\n<details class=\"spoiler\">\n<summary>setup.sh<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"bash\">tar -xf ..\/jdk1.8.0_181.tar.gz -C \/opt\/ mv \/home\/kafka\/kafka \/opt mv \/home\/kafka\/zookeeper \/opt mv \/home\/kafka\/kafka-start.sh \/opt mv \/home\/kafka\/scripts \/opt  ln -sfn \/opt\/kafka\/kafka_2.13-2.6.0 \/opt\/kafka\/current ln -sfn \/opt\/zookeeper\/zookeeper-3.6.2 \/opt\/zookeeper\/current ln -sfn \/opt\/jdk1.8.0_181\/ \/opt\/java  chown -R kafka:kafka \/opt chmod -R 700 \/opt  #env_var start -------------------------------&gt;  kafkaProfile=\/home\/kafka\/.bash_profile  homeVar=\"export JAVA_HOME=\/opt\/java\" javaHome=$(cat $kafkaProfile | grep \"$homeVar\")   if [ \"$javaHome\" != \"$homeVar\" ]; then     echo -e \"\\n$homeVar\\n\" &gt;&gt; $kafkaProfile fi   pathVar=\"export PATH=\\$JAVA_HOME\/bin:\\$PATH\" path=$(cat $kafkaProfile | grep \"$pathVar\")  if [ \"$path\" != \"$pathVar\" ]; then     echo -e \"\\n$pathVar\\n\" &gt;&gt; $kafkaProfile fi  #env_var end ---------------------------------&gt;     #ulimit start &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;  limitsFile=\/etc\/security\/limits.conf  soft=\"kafka soft nofile 262144\" limitSoft=$(cat $limitsFile | grep \"$soft\")  if [ \"$limitSoft\" != \"$soft\" ]; then     echo -e \"\\n$soft\\n\" &gt;&gt; $limitsFile fi   hard=\"kafka hard nofile 262144\" limitHard=$(cat $limitsFile | grep \"$hard\")  if [ \"$limitHard\" != \"$hard\" ]; then     echo -e \"\\n$hard\\n\" &gt;&gt; $limitsFile fi  #ulimit end &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<p>\u0414\u0430\u043b\u0435\u0435 \u0438\u0437 \u043f\u043e\u0434 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f kafka \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u0447\u0442\u043e \u0443 \u043d\u0430\u0441 \u0432\u0441\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e<\/p>\n<pre><code class=\"bash\">ulimit -n  = 262144 echo $JAVA_HOME  = \/opt\/java echo $PATH  \u0434\u043e\u043b\u0436\u0435\u043d \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \/opt\/java\/bin<\/code><\/pre>\n<h2>\u041d\u043e\u0432\u044b\u0439 \u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u0437\u0443\u043a\u0438\u043f\u0435\u0440\u043e\u0432<\/h2>\n<p>\u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c, \u0447\u0442\u043e \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0435 \u043d\u043e\u0432\u044b\u0445 \u0437\u0443\u043a\u0438\u043f\u0435\u0440\u043e\u0432 \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u043d\u044b \u0432\u0441\u0435 \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0438 \u0430\u043d\u0441\u0430\u0431\u043b\u044f, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u0430 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044f, \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0437\u0443\u043a\u0438\u043f\u0435\u0440\u0430, \u0433\u0434\u0435 \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u0444\u0430\u0439\u043b <strong>myid<\/strong>, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u043d\u044b id \u0437\u0443\u043a\u0438\u043f\u0435\u0440\u043e\u0432.<\/p>\n<p>\u043d\u0438\u0436\u0435 \u043a\u0443\u0441\u043e\u043a \u0444\u0430\u0439\u043b\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0437\u0443\u043a\u0438\u043f\u0435\u0440\u0430 <strong>\/opt\/zookeeper\/current\/conf\/zoo.cfg<\/strong><\/p>\n<details class=\"spoiler\">\n<summary>zoo.cfg<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"bash\">dataDir=\/opt\/zookeeper\/zookeeper-data server.1=server1:2888:3888 server.2=server2:2888:3888 server.3=server3:2888:3888  server.4=server4:2888:3888 server.5=server5:2888:3888 server.6=server6:2888:3888<\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<p>\u0421\u0442\u0430\u0440\u0442\u0443\u0435\u043c \u0432\u0441\u0435 \u0437\u0443\u043a\u0438\u043f\u0435\u0440\u044b <strong>\/opt\/zookeeper\/current\/bin\/zkServer.sh start<\/strong><\/p>\n<p>\u0414\u0430\u043b\u0435\u0435 \u043d\u0430\u043c \u043d\u0430\u0434\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432 \u043a\u043e\u043d\u0444\u0438\u0433 \u0441\u0442\u0430\u0440\u044b\u0445 \u0437\u0443\u043a\u0438\u043f\u0435\u0440\u043e\u0432 \u043d\u043e\u0432\u044b\u0445 \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u043e\u0432. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0430 <strong>\u0441\u0442\u0430\u0440\u044b\u0445<\/strong> \u0441\u0435\u0440\u0432\u0435\u0440\u0430\u0445 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u0442\u0430\u043a\u043e\u0439 \u0441\u043a\u0440\u0438\u043f\u0442<\/p>\n<details class=\"spoiler\">\n<summary>zk-add-new-servers.sh<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"bash\">echo -e \"\\nserver.4=server4:2888:3888\" &gt;&gt; \/opt\/zookeeper\/zookeeper-3.4.13\/conf\/zoo.cfg echo -e \"\\nserver.5=server5:2888:3888\" &gt;&gt; \/opt\/zookeeper\/zookeeper-3.4.13\/conf\/zoo.cfg echo -e \"\\nserver.6=server6:2888:3888\" &gt;&gt; \/opt\/zookeeper\/zookeeper-3.4.13\/conf\/zoo.cfg<\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0443\u0436\u043d\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u043a\u0442\u043e \u0438\u0437 \u0437\u0443\u043a\u0438\u043f\u0435\u0440\u043e\u0432 \u0431\u044b\u043b \u043b\u0438\u0434\u0435\u0440\u043e\u043c, \u0438 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0432\u0441\u0435 \u0437\u0443\u043a\u0438\u043f\u0435\u0440\u044b. \u041b\u0438\u0434\u0435\u0440\u0430 \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u044e\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c.<\/p>\n<pre><code class=\"bash\">\/opt\/zookeeper\/zookeeper-3.4.13\/bin\/zkServer.sh restart<\/code><\/pre>\n<p>\u041d\u0430\u043a\u043e\u043d\u0435\u0446 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c, \u0447\u0442\u043e \u0432\u0441\u0435 \u0437\u0443\u043a\u0438\u043f\u0435\u0440\u044b \u0443\u0432\u0438\u0434\u0435\u043b\u0438 \u0434\u0440\u0443\u0433 \u0434\u0440\u0443\u0433\u0430 \u0438 \u0432\u044b\u0431\u0440\u0430\u043b\u0438 \u043b\u0438\u0434\u0435\u0440\u0430. \u0412\u0435\u0437\u0434\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c<\/p>\n<pre><code class=\"bash\">...\/zkServer.sh status<\/code><\/pre>\n<p>\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0430\u043d\u0441\u0430\u043c\u0431\u043b\u044f \u0437\u0443\u043a\u0438\u043f\u0435\u0440\u043e\u0432 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0430.<\/p>\n<h2>\u041f\u043e\u0434\u043d\u044f\u0442\u0438\u0435 \u043d\u043e\u0432\u044b\u0445 \u0431\u0440\u043e\u043a\u0435\u0440\u043e\u0432<\/h2>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043d\u044f\u0442\u044c\u0441\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u043e\u043c \u043d\u043e\u0432\u044b\u0445 \u0431\u0440\u043e\u043a\u0435\u0440\u043e\u0432, \u043d\u043e \u043f\u0435\u0440\u0435\u0434 \u044d\u0442\u0438\u043c \u043d\u0443\u0436\u043d\u043e \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f \u0447\u0442\u043e \u0432 <strong>server.properties<\/strong> \u0443 \u043d\u0430\u0441 \u043f\u0440\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d <strong>broker.id<\/strong> \u0438 <strong>zookeeper.connect<\/strong><\/p>\n<p>\u041f\u0440\u0438\u043c\u0435\u0440 \u0434\u043b\u044f 4 \u0431\u0440\u043e\u043a\u0435\u0440\u0430<\/p>\n<pre><code class=\"bash\">broker.id=4 zookeeper.connect=server4:2181,server5:2181,server6:2181\/cluster_name<\/code><\/pre>\n<\/p>\n<p>\u0417\u0434\u0435\u0441\u044c \u043c\u044b \u0443\u043a\u0430\u0437\u0430\u043b\u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u043e\u0432\u044b\u0445 \u0437\u0443\u043a\u0438\u043f\u0435\u0440\u043e\u0432, \u043d\u043e \u0442\u0430\u043a \u043a\u0430\u043a \u043e\u043d\u0438 \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0432 \u0430\u043d\u0441\u0430\u043c\u0431\u043b\u0435, \u0442\u043e \u043d\u043e\u0432\u044b\u0435 \u0431\u0440\u043e\u043a\u0435\u0440\u044b \u0443\u0437\u043d\u0430\u044e\u0442 \u0447\u0435\u0440\u0435\u0437 \u043d\u0438\u0445 \u043e \u0441\u0442\u0430\u0440\u043e\u043c \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435.<\/p>\n<p>\u0422\u0430\u043a\u0436\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0442\u0430\u043c \u0436\u0435 \u0432 <strong>server.properties <\/strong>\u043f\u0440\u043e\u043f\u0438\u0441\u0430\u0442\u044c \u0442\u0435\u043a\u0443\u0449\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u043c\u0435\u0436\u0434\u0443 \u0431\u0440\u043e\u043a\u0435\u0440\u0430\u043c\u0438 (2.0.0). \u0418\u043d\u0430\u0447\u0435 \u043c\u044b \u043d\u0435 \u0441\u043c\u043e\u0436\u0435\u043c \u043f\u0435\u0440\u0435\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u043f\u0430\u0440\u0442\u0438\u0446\u0438\u0438. <\/p>\n<pre><code>inter.broker.protocol.version=2.0.0<\/code><\/pre>\n<p>\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u043d\u043e\u0432\u044b\u0445 \u0431\u0440\u043e\u043a\u0435\u0440\u043e\u0432<\/p>\n<pre><code class=\"bash\">nohup \/opt\/kafka\/current\/bin\/kafka-server-start.sh \/opt\/kafka\/config\/server.properties &gt; log.log 2&gt;&amp;1 &amp;<\/code><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0447\u0442\u043e \u043d\u043e\u0432\u044b\u0435 \u0431\u0440\u043e\u043a\u0435\u0440\u044b \u043f\u0440\u0438\u0441\u043e\u0435\u0434\u0438\u043d\u0438\u043b\u0438\u0441\u044c \u043a \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0443. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0437\u0430\u0445\u043e\u0434\u0438\u043c \u0432 cli \u043b\u044e\u0431\u043e\u0433\u043e \u0438\u0437 \u0437\u0443\u043a\u0438\u043f\u0435\u0440\u043e\u0432.<\/p>\n<pre><code class=\"bash\">\/opt\/zookeeper\/current\/bin\/zkCli.sh<\/code><\/pre>\n<p>\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u0442\u0430\u043c \u043a\u043e\u043c\u0430\u043d\u0434\u0443<\/p>\n<pre><code class=\"bash\">ls \/cluster_name\/brokers\/ids<\/code><\/pre>\n<p>\u0414\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0432\u044b\u0432\u0435\u0434\u0435\u043d \u0442\u0430\u043a\u043e\u0439 \u043e\u0442\u0432\u0435\u0442<\/p>\n<pre><code>[1,2,3,4,5,6]<\/code><\/pre>\n<p>\u042d\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442 \u0447\u0442\u043e \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435 \u0443 \u043d\u0430\u0441 \u0432\u0441\u0435 6 \u0448\u0442\u0443\u043a \u0431\u0440\u043e\u043a\u0435\u0440\u043e\u0432, \u0447\u0435\u0433\u043e \u043c\u044b \u0438 \u0434\u043e\u0431\u0438\u0432\u0430\u043b\u0438\u0441\u044c.<\/p>\n<h2>\u041f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u043f\u0430\u0440\u0442\u0438\u0446\u0438\u0439<\/h2>\n<p>\u0421\u0435\u0439\u0447\u0430\u0441 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0441\u0430\u043c\u043e\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0435. \u0418\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u0433\u0434\u0435-\u0442\u043e \u0441\u0438\u0434\u0435\u043b\u043e \u0432 \u0433\u043e\u043b\u043e\u0432\u0435, \u0430 \u0438\u043d\u043e\u0433\u0434\u0430 \u0438 \u043f\u043e\u0434\u043a\u0440\u0435\u043f\u043b\u044f\u043b\u043e\u0441\u044c \u0447\u0430\u0442\u0438\u043a\u0430\u043c\u0438 \u043f\u043e \u043a\u0430\u0444\u043a\u0435, \u0447\u0442\u043e \u043f\u0430\u0440\u0442\u0438\u0446\u0438\u0438 \u0441\u0430\u043c\u0438 \u043f\u0435\u0440\u0435\u0435\u0434\u0443\u0442, \u043d\u0443\u0436\u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0434\u043d\u044f\u0442\u044c \u043d\u043e\u0432\u044b\u0445 \u0431\u0440\u043e\u043a\u0435\u0440\u043e\u0432 \u0438 \u043f\u043e\u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u0433\u0430\u0441\u0438\u0442\u044c \u0441\u0442\u0430\u0440\u044b\u0435. replication.factor \u0434\u043e\u043b\u0436\u0435\u043d \u0441\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0438 \u0440\u0435\u043f\u043b\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u0441\u0435 \u043d\u0430 \u043d\u043e\u0432\u044b\u0445 \u0431\u0440\u043e\u043a\u0435\u0440\u043e\u0432. \u0412 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0432\u0441\u0435 \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u043d\u0435 \u0442\u0430\u043a \u043f\u0440\u043e\u0441\u0442\u043e. \u0422\u0435\u043a\u0443\u0449\u0438\u0435 \u043f\u0430\u0440\u0442\u0438\u0446\u0438\u0438 \u043c\u0435\u0440\u0442\u0432\u043e \u043f\u0440\u0438\u043a\u043b\u0435\u0435\u043d\u044b \u043a \u0441\u0442\u0430\u0440\u044b\u043c \u0431\u0440\u043e\u043a\u0435\u0440\u0430\u043c \u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043d\u043e\u0432\u044b\u0445 \u0442\u043e\u043f\u0438\u043a\u043e\u0432 \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u043a \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u044e \u043f\u0430\u0440\u0442\u0438\u0446\u0438\u0439 \u043d\u0430 \u043d\u043e\u0432\u044b\u0445 \u0431\u0440\u043e\u043a\u0435\u0440\u0430\u0445.<\/p>\n<p>\u0417\u0430\u0433\u043b\u044f\u043d\u0443\u0432 \u0432 <a href=\"https:\/\/kafka.apache.org\/20\/documentation.html#basic_ops_cluster_expansion\" rel=\"noopener noreferrer nofollow\">\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044e<\/a> \u044f \u0443\u0432\u0438\u0434\u0435\u043b , \u0447\u0442\u043e \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u043f\u0430\u0440\u0442\u0438\u0446\u0438\u0439 &#171;\u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435&#187;, \u043d\u043e \u043d\u0430\u0434\u043e \u043f\u0440\u043e\u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0435\u043c\u0430\u043b\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043c\u0430\u043d\u0438\u043f\u0443\u043b\u044f\u0446\u0438\u0439, \u0447\u0442\u043e\u0431\u044b \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0432\u0441\u0435 \u044d\u0442\u043e \u0434\u0435\u043b\u043e. <\/p>\n<p>\u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0443\u0436\u043d\u043e \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c json \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043d\u0430\u0434\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0432\u0441\u0435 \u0442\u043e\u043f\u0438\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0430\u0442\u044c\u0441\u044f.<\/p>\n<pre><code class=\"json\">{\"topics\": [{\"topic\": \"foo1\"},               {\"topic\": \"foo2\"}],   \"version\":1  }<\/code><\/pre>\n<p>\u0422\u0430\u043a \u043a\u0430\u043a \u0442\u043e\u043f\u0438\u043a\u043e\u0432 \u0443 \u043d\u0430\u0441 \u0431\u044b\u043b\u043e \u043c\u043d\u043e\u0433\u043e, \u044f \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u043b \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0442\u0430\u043a\u0438\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 <\/p>\n<p>\u0414\u0430\u043b\u0435\u0435 \u0432\u0441\u0435 \u044d\u0442\u0438 json \u0444\u0430\u0439\u043b\u044b \u043d\u0430\u0434\u043e \u0441\u043a\u043e\u0440\u043c\u0438\u0442\u044c \u0443\u0442\u0438\u043b\u0438\u0442\u0435 <strong>kafka-reassign-partitions.sh <\/strong>\u0441 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u043c             <strong>&#8212;generate <\/strong>\u0438 \u0443\u043a\u0430\u0437\u0430\u0442\u044c id \u0431\u0440\u043e\u043a\u0435\u0440\u043e\u0432 \u043a\u0443\u0434\u0430 \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u043f\u0435\u0440\u0435\u0435\u0445\u0430\u0442\u044c <strong>&#8212;broker-list &#171;4,5,6&#187;<\/strong>.<\/p>\n<p>\u0423 \u043d\u0430\u0441 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0444\u0430\u0439\u043b\u043e\u0432 \u0442\u0430\u043a\u043e\u0433\u043e \u0432\u0438\u0434\u0430<\/p>\n<details class=\"spoiler\">\n<summary>generate1.json<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"json\">{\"version\":1,   \"partitions\":[{\"topic\":\"foo1\",\"partition\":2,\"replicas\":[1,2,3]},                 {\"topic\":\"foo1\",\"partition\":0,\"replicas\":[3,2,1]},                 {\"topic\":\"foo2\",\"partition\":2,\"replicas\":[1,2,3]},                 {\"topic\":\"foo2\",\"partition\":0,\"replicas\":[3,2,1]},                 {\"topic\":\"foo1\",\"partition\":1,\"replicas\":[2,3,1]},                 {\"topic\":\"foo2\",\"partition\":1,\"replicas\":[2,3,1]}]   }    Proposed partition reassignment configuration    {\"version\":1,   \"partitions\":[{\"topic\":\"foo1\",\"partition\":2,\"replicas\":[5,4,6]},                 {\"topic\":\"foo1\",\"partition\":0,\"replicas\":[4,5,6]},                 {\"topic\":\"foo2\",\"partition\":2,\"replicas\":[6,4,5]},                 {\"topic\":\"foo2\",\"partition\":0,\"replicas\":[4,5,6]},                 {\"topic\":\"foo1\",\"partition\":1,\"replicas\":[5,4,6]},                 {\"topic\":\"foo2\",\"partition\":1,\"replicas\":[4,5,6]}]   }<\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<p>\u0412\u0441\u0435 \u0447\u0442\u043e \u0438\u0434\u0435\u0442 \u0434\u043e <strong>Proposed partition reassignment configuration <\/strong>\u044d\u0442\u043e \u0442\u0435\u043a\u0443\u0449\u0435\u0435 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043f\u0430\u0440\u0442\u0438\u0446\u0438\u0439 (\u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u0433\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u0434\u043b\u044f \u0440\u043e\u043b\u043b\u0431\u0435\u043a\u0430). \u0412\u0441\u0435 \u0447\u0442\u043e \u043f\u043e\u0441\u043b\u0435 &#8212; \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043f\u043e\u0441\u043b\u0435 \u043f\u0435\u0440\u0435\u0435\u0437\u0434\u0430. \u0421\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043d\u0430\u043c \u043d\u0430\u0434\u043e \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u0432\u0441\u0435 \u044d\u0442\u0438 \u043d\u0438\u0436\u043d\u0438\u0435 \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u044b \u0441\u043e \u0432\u0441\u0435\u0445 \u0444\u0430\u0439\u043b\u043e\u0432, \u0441\u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u043e\u0432\u044b\u0435 json. <\/p>\n<p>\u0422\u0430\u043a \u043a\u0430\u043a \u0432\u0441\u0435 \u044d\u0442\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u0440\u0443\u043a\u0430\u043c\u0438 \u043d\u0443 \u043e\u043e\u043e\u0447\u0435\u043d\u044c \u0434\u043e\u043b\u0433\u043e. \u044f &#171;\u0431\u044b\u0441\u0442\u0440\u043e&#187; \u043d\u0430\u043a\u0430\u0442\u0430\u043b \u0441\u043a\u0440\u0438\u043f\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 \u0432\u0441\u0435 \u044d\u0442\u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0438 \u0440\u0435\u0436\u0435\u0442 \u0444\u0430\u0439\u043b\u044b \u043a\u0430\u043a \u043d\u0430\u043c \u043d\u0430\u0434\u043e. \u0417\u0430 \u0440\u0435\u0437\u043a\u0443 \u0444\u0430\u0439\u043b\u043e\u0432 \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u0434\u0436\u0430\u0440\u043d\u0438\u043a <strong>kafka-reassign-helper.jar <\/strong>\u043a\u043e\u0434 \u043c\u043e\u0436\u043d\u043e \u0433\u043b\u044f\u043d\u0443\u0442\u044c <a href=\"https:\/\/github.com\/ryletka\/kafka-topics\/blob\/main\/src\/main\/java\/ru\/kafka\/Main.java\" rel=\"noopener noreferrer nofollow\">\u0442\u0443\u0442<\/a>.<\/p>\n<p>\u041d\u0438\u0436\u0435 \u0441\u043a\u0440\u0438\u043f\u0442 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0438 \u0444\u0430\u0439\u043b\u043e\u0432 \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0435\u0437\u0434\u0430 \u043f\u0430\u0440\u0442\u0438\u0446\u0438\u0439<\/p>\n<details class=\"spoiler\">\n<summary>prepare-for-reassignment.sh<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"bash\">#\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u0437\u0430 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0442\u043e\u043f\u0438\u043a\u043e\u0432 \u0432 \u043e\u0434\u043d\u043e\u043c \u0444\u0430\u0439\u043b\u0435. \u0443 \u043d\u0430\u0441 \u0431\u044b\u043b\u043e 20 if [ \"$#\" -eq 0 ] then     echo \"no arguments\"     exit 1 fi   echo \"Start reassignment preparing\"  \/opt\/kafka\/current\/bin\/kafka-topics.sh --list --zookeeper localhost:2181\/cluster_name &gt;&gt; topics.txt  echo created topics.txt  java -jar kafka-reassign-helper.jar generate topics.txt $1  fileCount=$(ls -dq generate*.json | wc -l)  echo \"created $fileCount file for topics to move\"  echo -e \"\\nCreating generated files\\n\"  mkdir -p generated for ((i = 1; i &lt; $fileCount+1; i++ )) do \/opt\/kafka\/current\/bin\/kafka-reassign-partitions.sh --zookeeper localhost:2181\/cluster_name --broker-list \"4,5,6\" --topics-to-move-json-file \"generate$i.json\" --generate &gt;&gt; \"generated\/generated$i.txt\" echo \"generated\/generated$i.txt\" created done  echo -e \"\\nCreating execute\/rollback files\"  java -jar kafka-reassign-helper.jar execute $fileCount  echo -e \"\\nexecute\/rollback files created\"  echo -e \"\\nPreparing finished successfully!\"<\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0441\u043a\u0440\u0438\u043f\u0442\u0430 \u0441\u043a\u0430\u0440\u043c\u043b\u0438\u0432\u0430\u0435\u043c \u0441\u0433\u0435\u043d\u0435\u0440\u0435\u043d\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b \u043f\u043e \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u0443\u0442\u0438\u043b\u0438\u0442\u0435 <strong>kafka-reassign-partitions.sh, <\/strong>\u043d\u043e \u043d\u0430 \u044d\u0442\u043e\u0442 \u0440\u0430\u0437 \u0441 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u043c <strong>&#8212;execute<\/strong><\/p>\n<details class=\"spoiler\">\n<summary>move-partitions.sh<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"bash\">#\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u0437\u0430 \u043d\u043e\u043c\u0435\u0440 \u0444\u0430\u0439\u043b\u0430 execute1.json, execute2.json .... if [ \"$#\" -eq 0 ] then     echo \"no arguments\"     exit 1 fi           \/opt\/kafka\/current\/bin\/kafka-reassign-partitions.sh --zookeeper localhost:2181\/cluster_name --reassignment-json-file \"execute\/execute$1.json\" --execute<\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<p>\u0412\u043e\u0442 \u0442\u0435\u043f\u0435\u0440\u044c \u043a\u0430\u0444\u043a\u0430 \u043d\u0430\u0447\u043d\u0435\u0442 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0430\u0442\u044c \u043f\u0430\u0440\u0442\u0438\u0446\u0438\u0438. \u0412 \u043b\u043e\u0433\u0435 \u043d\u043e\u0432\u044b\u0445 \u0431\u0440\u043e\u043a\u0435\u0440\u043e\u0432 \u0441\u0443\u0434\u043e\u0440\u043e\u0436\u043d\u043e \u0437\u0430\u0431\u0435\u0433\u0430\u044e\u0442 \u0441\u0442\u0440\u043e\u043a\u0438, \u043a\u0430\u043a \u0438 \u0432 \u043b\u043e\u0433\u0430\u0445 \u0441\u0442\u0430\u0440\u044b\u0445. \u041f\u043e\u043a\u0430 \u0432\u0441\u0435 \u044d\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442, \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u0441\u043a\u0443\u0447\u0430\u0442\u044c, \u043d\u0430\u043c \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u043b\u0438 \u0442\u0440\u0435\u0442\u0438\u0439 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442 <strong>kafka-reassign-partitions.sh, <\/strong>\u0430<strong> <\/strong>\u0438\u043c\u0435\u043d\u043d\u043e <strong>&#8212;verify, <\/strong>\u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0443\u0437\u043d\u0430\u0442\u044c \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u0441\u0442\u0430\u0442\u0443\u0441 \u043f\u0435\u0440\u0435\u0435\u0437\u0434\u0430. <\/p>\n<p>\u041e\u043f\u044f\u0442\u044c \u0436\u0435 \u0432 \u0441\u0438\u043b\u0443 \u043b\u0435\u043d\u0438, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u043d\u0435 \u0434\u0435\u0440\u0433\u0430\u0442\u044c \u0440\u0443\u043a\u0430\u043c\u0438 \u044d\u0442\u0443 \u043a\u043e\u043c\u0430\u043d\u0434\u0443, \u0431\u044b\u043b \u043d\u0430\u043f\u0438\u0441\u0430\u043d \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u0439 \u0441\u043a\u0440\u0438\u043f\u0442.<\/p>\n<details class=\"spoiler\">\n<summary>reassign-verify.sh<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"bash\">progress=-1  while [ $progress != 0 ] do      progress=$(\/opt\/kafka\/current\/bin\/kafka-reassign-partitions.sh --zookeeper localhost:2181\/cluster_name --reassignment-json-file execute\/execute$1.json --verify | grep \"in progress\" -c)     complete=$(\/opt\/kafka\/current\/bin\/kafka-reassign-partitions.sh --zookeeper localhost:2181\/cluster_name --reassignment-json-file execute\/execute$1.json --verify | grep \"is complete\" -c)     failed=$(\/opt\/kafka\/current\/bin\/kafka-reassign-partitions.sh --zookeeper localhost:2181\/cluster_name --reassignment-json-file execute\/execute$1.json --verify | grep \"failed\" -c)      echo \"In progress:\" $progress;     echo \"Is complete:\" $complete;     echo \"Failed:\" $failed;      sleep 2s  done<\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<p>\u0412\u044b\u0437\u044b\u0432\u0430\u0435\u043c \u0438 \u0436\u0434\u0435\u043c \u043f\u043e\u043a\u0430 <strong>In progress<\/strong> \u0441\u0442\u0430\u043d\u0435\u0442 \u0440\u0430\u0432\u043d\u044b\u043c 0. \u0430 <strong>Is complete<\/strong> \u043f\u0440\u0438\u043c\u0435\u0442 \u043a\u0430\u043a\u043e\u0435-\u0442\u043e \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435. \u0418 \u043d\u0430\u0434\u0435\u0435\u043c\u0441\u044f \u0447\u0442\u043e <strong>Failed<\/strong> \u0442\u0430\u043a \u0438 \u043e\u0441\u0442\u0430\u043d\u0435\u0442\u0441\u044f 0.<\/p>\n<p>\u041a\u043e\u0433\u0434\u0430 \u0432\u0441\u0435 \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043b\u043e\u0441\u044c \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u043c \u0441\u043d\u043e\u0432\u0430 <strong>move-partitions.sh<\/strong> \u0438 <strong>reassign-verify.sh<\/strong> \u0434\u043b\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u0444\u0430\u0439\u043b\u0430, \u0434\u043e \u0442\u0435\u0445 \u043f\u043e\u0440 \u043f\u043e\u043a\u0430 \u043d\u0435 \u043f\u0435\u0440\u0435\u0431\u0435\u0440\u0435\u043c \u0432\u0441\u0435 \u043d\u0430\u0448\u0438 \u0444\u0430\u0439\u043b\u044b \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u0438.<\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0432\u0441\u0435\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 \u0438\u0434\u0435\u043c \u0432 <strong>log.dirs<\/strong> \u0441\u0442\u0430\u0440\u044b\u0445 \u0431\u0440\u043e\u043a\u0435\u0440\u043e\u0432 \u0438 \u0443\u0431\u0435\u0436\u0434\u0430\u0435\u043c\u0441\u044f, \u0447\u0442\u043e \u0442\u0430\u043c \u043e\u0441\u0442\u0430\u043b\u0438\u0441\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043b\u043e\u0433\u0438 \u0441\u0430\u043c\u043e\u0439 \u043a\u0430\u0444\u043a\u0438 &#8212; \u0437\u043d\u0430\u0447\u0438\u0442 \u0432\u0441\u0435 \u043f\u0430\u0440\u0442\u0438\u0446\u0438\u0438 \u0442\u043e\u0447\u043d\u043e \u043d\u0430 \u043d\u043e\u0432\u043e\u043c \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435.<\/p>\n<h2>\u041e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0441\u0442\u0430\u0440\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430<\/h2>\n<p>\u0422\u0443\u0442 \u0432\u0441\u0435 \u043f\u0440\u043e\u0441\u0442\u043e. \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c <strong>kafka-server-stop.sh<\/strong> \u0438 <strong>zkStop.sh <\/strong>\u0434\u043b\u044f \u0431\u0440\u043e\u043a\u0435\u0440\u043e\u0432 \u0438 \u0437\u0443\u043a\u0438\u043f\u0435\u0440\u043e\u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e.<\/p>\n<h2>\u0427\u0438\u0441\u0442\u0438\u043c \u043a\u043e\u043d\u0444\u0438\u0433\u0438 \u043d\u043e\u0432\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430<\/h2>\n<p>\u041d\u0430\u0447\u0438\u043d\u0430\u0435\u043c \u0441 \u0437\u0443\u043a\u0438\u043f\u0435\u0440\u043e\u0432. \u0418\u0437 \u0444\u0430\u0439\u043b\u043e\u0432 <strong>zoo.cfg<\/strong> \u0443\u0434\u0430\u043b\u044f\u0435\u043c \u043b\u0438\u0448\u043d\u0438\u0435 \u0437\u0430\u043f\u0438\u0441\u0438<\/p>\n<details class=\"spoiler\">\n<summary>zk-remove-old-servers.sh<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"bash\">sed -i '\/server.1\/d' \/opt\/zookeeper\/current\/conf\/zoo.cfg sed -i '\/server.2\/d' \/opt\/zookeeper\/current\/conf\/zoo.cfg sed -i '\/server.3\/d' \/opt\/zookeeper\/current\/conf\/zoo.cfg<\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<p>\u0414\u0430\u043b\u0435\u0435, \u043a\u0430\u043a \u043e\u0431\u044b\u0447\u043d\u043e, \u0443 \u0437\u0443\u043a\u0438\u043f\u0435\u0440\u043e\u0432 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c \u043a\u0442\u043e \u043b\u0438\u0434\u0435\u0440 \u0438 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u043f\u043e \u043e\u0447\u0435\u0440\u0435\u0434\u0438, \u043b\u0438\u0434\u0435\u0440\u0430 \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u044e\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c. \u041f\u043e\u0441\u043b\u0435 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u0441\u0442\u0430\u0442\u0443\u0441\u044b: 2 \u0444\u043e\u043b\u043b\u043e\u0432\u0435\u0440\u0430 \u0438 1 \u043b\u0438\u0434\u0435\u0440.<\/p>\n<p>\u0423\u0434\u0430\u043b\u044f\u0435\u043c \u0438\u0437 <strong>server.properties<\/strong> \u0431\u0440\u043e\u043a\u0435\u0440\u043e\u0432 \u0441\u0442\u0430\u0440\u044b\u0439 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b \u043e\u0431\u0449\u0435\u043d\u0438\u044f<\/p>\n<details class=\"spoiler\">\n<summary>remove-old-protocol.sh<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"bash\">sed -i '\/inter.broker.protocol.version=2.0.0\/d' \/opt\/kafka\/config\/server.properties<\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0432\u0440\u043e\u0434\u0435 \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0431\u0440\u043e\u043a\u0435\u0440\u043e\u0432, \u043d\u043e \u043d\u0430\u0434\u043e \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u0432\u0441\u0435 \u043f\u0430\u0440\u0442\u0438\u0446\u0438\u0438 \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0432 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438 <strong>insync<\/strong>, \u043f\u0440\u0438\u0447\u0435\u043c \u043d\u0435 \u0432 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0435 <strong>min.insync.replicas (\u0443 \u043d\u0430\u0441 \u0440\u0430\u0432\u043d\u043e 2)<\/strong>, \u0430 \u0432 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0435 <strong>default.replication.factor (\u0443 \u043d\u0430\u0441 3)<\/strong><\/p>\n<p>\u0418\u043d\u0430\u0447\u0435 \u0435\u0441\u043b\u0438 \u0433\u0434\u0435-\u0442\u043e \u0431\u0443\u0434\u0435\u0442 2 \u0440\u0435\u043f\u043b\u0438\u043a\u0438, \u0430 \u043d\u0435 3, \u0442\u043e \u043f\u0440\u0438 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a\u0435 \u0431\u0440\u043e\u043a\u0435\u0440\u0430, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043b\u0435\u0436\u0438\u0442 \u043e\u0434\u043d\u0430 \u0438\u0437 \u044d\u0442\u0438\u0445 \u0434\u0432\u0443\u0445 \u0440\u0435\u043f\u043b\u0438\u043a, \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u043e\u0448\u0438\u0431\u043a\u0443 \u043d\u0430 \u043a\u043b\u0438\u0435\u043d\u0442\u0435, \u0447\u0442\u043e \u043d\u0435 \u0445\u0432\u0430\u0442\u0430\u0435\u0442 <strong>insync<\/strong> \u0440\u0435\u043f\u043b\u0438\u043a.<\/p>\n<p>\u041d\u0438\u0436\u0435 \u0441\u043a\u0440\u0438\u043f\u0442\u0438\u043a \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438<\/p>\n<details class=\"spoiler\">\n<summary>check-insync.sh<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"bash\">input=\"check-topics.txt\" rm -f $input  \/opt\/kafka\/current\/bin\/kafka-topics.sh --list --zookeeper localhost:2181\/cluster_name &gt;&gt; check-topics.txt  checkPerIter=100 i=0 list=\"\" notInsync=0 while IFS= read -r line do  ((i=i+1))  list+=\"${line}|\"  if [ $i -eq $checkPerIter ]   then    list=${list::${#list}-1}    echo \"checking $list\"    count=$(\/opt\/kafka\/current\/bin\/kafka-topics.sh --describe --topic $list --zookeeper localhost:2181\/cluster_name | egrep \"Isr: [4-6\/,]{3}$\" -c)    if [ \"$count\" -ne 0 ]     then      \/opt\/kafka\/current\/bin\/kafka-topics.sh --describe --topic $list --zookeeper localhost:2181\/cluster_name | egrep \"Isr: [4-6\/,]{3}$\"    fi    ((notInsync=notInsync+count))    list=\"\"    i=0  fi done &lt; \"$input\"  echo \"not insync: $notInsync\"<\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<p>\u0415\u0441\u043b\u0438 \u043d\u0430 \u0432\u044b\u0445\u043e\u0434\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c <strong>not insync: 0<\/strong>, \u0442\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u043e \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0431\u0440\u043e\u043a\u0435\u0440\u043e\u0432.<\/p>\n<p>\u0412\u043e\u0442 \u0438 \u0432\u0441\u0435. \u041c\u0438\u0433\u0440\u0430\u0446\u0438\u044f \u0431\u0440\u043e\u043a\u0435\u0440\u043e\u0432 \u043d\u0430 \u044d\u0442\u043e\u043c \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0430, \u0435\u0441\u043b\u0438 \u043d\u0435 \u0441\u0447\u0438\u0442\u0430\u0442\u044c \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u0449\u0435\u0439 \u043f\u0435\u0440\u0435\u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0430 \u0438 \u043f\u0440\u043e\u0447\u0438\u0445 \u0432\u0441\u043f\u043e\u043c\u043e\u0433\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0434\u0435\u043b.<\/p>\n<p>\u0412\u043e\u0442 \u043a\u0430\u043a \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u044f \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u043b \u0430\u0434\u043c\u0438\u043d\u0430\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u0441\u0435 \u044d\u0442\u043e \u043f\u0440\u043e\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u043b\u0438 \u043d\u0430 \u0431\u043e\u044e. \u041d\u0430 \u0443\u0434\u0438\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u043f\u0440\u0430\u0432\u0438\u043b\u0438\u0441\u044c \u0441 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0440\u0430\u0437\u0430 \u0438 \u0431\u0435\u0437 \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u0432.<\/p>\n<details class=\"spoiler\">\n<summary>README.txt<\/summary>\n<div class=\"spoiler__content\">\n<pre><code>\u0418\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f \u043f\u043e \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u0438 \u043a\u0430\u0444\u043a\u0430 2.0.0 -&gt; 2.6.0  1 \u044d\u0442\u0430\u043f. \u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b  1.1 \u0421\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0430\u0440\u0445\u0438\u0432\u044b \u0434\u043b\u044f \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u0438 \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u043a\u0430\u0444\u043a\u0438  NEW4.tar.gz -&gt; \u0430\u0434\u0440\u0435\u0441 4 \u0431\u0440\u043e\u043a\u0435\u0440\u0430 migration.tar.gz -&gt; \u0430\u0434\u0440\u0435\u0441 4 \u0431\u0440\u043e\u043a\u0435\u0440\u0430  NEW5.tar.gz -&gt; \u0430\u0434\u0440\u0435\u0441 5 \u0431\u0440\u043e\u043a\u0435\u0440\u0430 NEW6.tar.gz -&gt; \u0430\u0434\u0440\u0435\u0441 6 \u0431\u0440\u043e\u043a\u0435\u0440\u0430  1.2 \u0420\u0430\u0437\u0430\u0440\u0445\u0438\u0432\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0430\u0440\u0445\u0438\u0432\u044b  tar -xf NEW4.tar.gz -C \/home\/kafka tar -xf NEW5.tar.gz -C \/home\/kafka tar -xf NEW6.tar.gz -C \/home\/kafka  1.3 \u041e\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f root \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0441\u043a\u0440\u0438\u043f\u0442 \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u043c \u043d\u043e\u0432\u043e\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u0435 (\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0444\u0430\u0439\u043b\u043e\u0432 \u0432 \u043d\u0443\u0436\u043d\u044b\u0435 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438, \u043f\u0440\u0430\u0432 \u0438 \u043b\u0438\u043c\u0438\u0442\u043e\u0432)  \/home\/kafka\/scripts\/setup.sh  1.4 \u041f\u0435\u0440\u0435\u0439\u0442\u0438 \u043d\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f kafka (\u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u043c \u043d\u043e\u0432\u043e\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u0435)  1.5 \u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0441\u0440\u0435\u0434\u044b (\u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u043c \u043d\u043e\u0432\u043e\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u0435)  ulimit -n  = 262144 echo $JAVA_HOME  = \/opt\/java echo $PATH  \u0434\u043e\u043b\u0436\u0435\u043d \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \/opt\/java\/bin  \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u043f\u0430\u043f\u043a\u0438 \/opt \u0434\u043e\u043b\u0436\u043d\u043e \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u0430\u0442\u044c kafka kafka    2 \u044d\u0442\u0430\u043f. \u0417\u0430\u043f\u0443\u0441\u043a \u0437\u0443\u043a\u0438\u043f\u0435\u0440\u043e\u0432 \u0438 \u0431\u0440\u043e\u043a\u0435\u0440\u043e\u0432  2.1 \u041f\u0435\u0440\u0435\u0439\u0442\u0438 \u043f\u043e\u0434 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f kafka (\u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u043c \u043d\u043e\u0432\u043e\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u0435)  2.2 \u0412\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0441\u043a\u0440\u0438\u043f\u0442 \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u043c \u043d\u043e\u0432\u043e\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u0435 (\u0437\u0430\u043f\u0443\u0441\u043a\u0430\u044e\u0442\u0441\u044f \u043d\u043e\u0432\u044b\u0435 \u0437\u0443\u043a\u0438\u043f\u0435\u0440\u044b)  \/opt\/scripts\/zkStart.sh  2.3 \u0421\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0430\u0440\u0445\u0438\u0432\u044b \u043d\u0430 \u0441\u0442\u0430\u0440\u044b\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u043a\u0430\u0444\u043a\u0438   OLD1.tar.gz -&gt; \u0430\u0434\u0440\u0435\u0441 1 \u0431\u0440\u043e\u043a\u0435\u0440\u0430 OLD2.tar.gz -&gt; \u0430\u0434\u0440\u0435\u0441 2 \u0431\u0440\u043e\u043a\u0435\u0440\u0430 OLD3.tar.gz -&gt; \u0430\u0434\u0440\u0435\u0441 3 \u0431\u0440\u043e\u043a\u0435\u0440\u0430  2.4 \u0420\u0430\u0437\u0430\u0440\u0445\u0438\u0432\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0430\u0440\u0445\u0438\u0432\u044b  tar -xf OLD1.tar.gz -C \/home\/kafka tar -xf OLD2.tar.gz -C \/home\/kafka tar -xf OLD3.tar.gz -C \/home\/kafka  2.5 \u041e\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f root \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0441\u043a\u0440\u0438\u043f\u0442 \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u043c \u0441\u0442\u0430\u0440\u043e\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u0435 (\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043f\u0440\u0430\u0432 \u043d\u0430 \u0441\u043a\u0440\u0438\u043f\u0442\u044b \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u0438)  \/home\/kafka\/scripts\/setup-old.sh  2.6 \u041f\u0435\u0440\u0435\u0439\u0442\u0438 \u043f\u043e\u0434 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f kafka \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u043c \u0441\u0442\u0430\u0440\u043e\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u0435  2.7 \u0412\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0441\u043a\u0440\u0438\u043f\u0442 \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u043c \u0441\u0442\u0430\u0440\u043e\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u0435 (\u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u043d\u043e\u0432\u044b\u0435 \u0437\u0443\u043a\u0438\u043f\u0435\u0440\u044b \u0432 \u043a\u043e\u043d\u0444\u0438\u0433 \u0441\u0442\u0430\u0440\u044b\u0445 \u0437\u0443\u043a\u0438\u043f\u0435\u0440\u043e\u0432)  \/home\/kafka\/scripts\/zk-add-new-servers.sh  2.8 \u0412\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0441\u043a\u0440\u0438\u043f\u0442 \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u043c \u0441\u0442\u0430\u0440\u043e\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u0435 (\u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0441\u0442\u0430\u0442\u0443\u0441\u0430 \u0437\u0443\u043a\u0438\u043f\u0435\u0440\u043e\u0432)  \/home\/kafka\/scripts\/zkStatus.sh  \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u043a\u0430\u043a\u043e\u0439 \u0438\u0437 \u0441\u0442\u0430\u0440\u044b\u0445 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043b\u0438\u0434\u0435\u0440\u043e\u043c  2.9 \u041f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043f\u043e \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u0437\u0443\u043a\u0438\u043f\u0435\u0440\u044b \u043d\u0430 \u0441\u0442\u0430\u0440\u044b\u0445 \u0441\u0435\u0440\u0432\u0435\u0440\u0430\u0445 \u043b\u0438\u0434\u0435\u0440\u0430 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u044e\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c  \/home\/kafka\/scripts\/zkRestart.sh  2.10 \u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0447\u0442\u043e \u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u0437\u0443\u043a\u0438\u043f\u0435\u0440\u043e\u0432 \u043f\u043e\u0434\u0445\u0432\u0430\u0442\u0438\u043b \u043d\u043e\u0432\u044b\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0430 \u0432\u0441\u0435\u0445 \u0441\u0435\u0440\u0432\u0435\u0440\u0430\u0445 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c  \/home\/kafka\/scripts\/zkStatus.sh (\u043d\u0430 \u0441\u0442\u0430\u0440\u044b\u0445) \/opt\/scripts\/zkStatus.sh (\u043d\u0430 \u043d\u043e\u0432\u044b\u0445)  \u0432\u0441\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u043a\u0440\u043e\u043c\u0435 \u043e\u0434\u043d\u043e\u0433\u043e \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0432 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438 follower \u043e\u0434\u0438\u043d \u0441\u0435\u0440\u0432\u0435\u0440 leader  2.11 \u0437\u0430\u043f\u0443\u0441\u043a \u043d\u043e\u0432\u044b\u0445 \u0431\u0440\u043e\u043a\u0435\u0440\u043e\u0432 \u043d\u0430 \u043d\u043e\u0432\u044b\u0445 \u0441\u0435\u0440\u0432\u0435\u0440\u0430\u0445 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0441\u043a\u0440\u0438\u043f\u0442 \/opt\/kafka-start.sh  2.12 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0447\u0442\u043e \u043d\u043e\u0432\u044b\u0435 \u0431\u0440\u043e\u043a\u0435\u0440\u044b \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043d\u0430 \u043d\u043e\u0432\u043e\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u0435  \/home\/kafka\/migration\/zkCli.sh  ls \/cluster_name\/brokers\/ids  \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0432\u044b\u0432\u0435\u0434\u0435\u043d\u043e [1,2,3,4,5,6]  3 \u044d\u0442\u0430\u043f \u041f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u043f\u0430\u0440\u0442\u0438\u0446\u0438\u0439 \u043d\u0430 \u043d\u043e\u0432\u044b\u0445 \u0431\u0440\u043e\u043a\u0435\u0440\u043e\u0432  3.1 \u0412\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0441\u043a\u0440\u0438\u043f\u0442 (\u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 \u0444\u0430\u0439\u043b\u043e\u0432 \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u044f \u043f\u0430\u0440\u0442\u0438\u0446\u0438\u0439) \/home\/kafka\/migration\/prepare-for-assignment.sh  20  3.2 \u0412\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0439 \u043f\u0443\u043d\u043a\u0442 \u043f\u043e \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u0432 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 \/home\/kafka\/migration\/execute   \u041f\u0440\u0438\u043c\u0435\u0440: \u0434\u043b\u044f \u0444\u0430\u0439\u043b\u0430 execute1.json \/home\/kafka\/migration\/move-partitions.sh 1  \u043f\u043e\u0441\u043b\u0435 \u043d\u0430\u0447\u0430\u043b\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0441\u043a\u0440\u0438\u043f\u0442\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0441\u043a\u0440\u0438\u043f\u0442   \u041f\u0440\u0438\u043c\u0435\u0440: \/home\/kafka\/migration\/reassign-verify.sh 1  \u043a\u043e\u0433\u0434\u0430 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u0430\u0440\u0442\u0438\u0446\u0438\u0439 \u0432 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438 \"in progress\" \u0434\u043e\u0441\u0442\u0438\u0433\u043d\u0435\u0442 0 \u0434\u043e\u0436\u0434\u0430\u0442\u044c\u0441\u044f \u041e\u041a \u043e\u0442 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u0430 \u0438 \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u0442\u044c \u043a \u043f.3.2 \u0434\u043b\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u0444\u0430\u0439\u043b\u0430  3.3 \u041f\u043e\u0441\u043b\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u044f \u043f\u0430\u0440\u0442\u0438\u0446\u0438\u0439 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043b\u043e\u0433\u043e\u0432 \u043d\u0430 \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u043e\u0448\u0438\u0431\u043e\u043a, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 \/opt\/kafka\/kafka-data \u043d\u0430 \u0432\u0441\u0435\u0445 \u0441\u0442\u0430\u0440\u044b\u0445 \u0431\u0440\u043e\u043a\u0435\u0440\u0430\u0445 \u0414\u043e\u043b\u0436\u043d\u044b \u043e\u0441\u0442\u0430\u0442\u044c\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043b\u043e\u0433\u0438 \u043a\u0430\u0444\u043a\u0438  3.4 \u041f\u043e \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u0432\u044b\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043d\u0430 \u0441\u0442\u0430\u0440\u044b\u0445 \u0441\u0435\u0440\u0432\u0435\u0440\u0430\u0445 \u0431\u0440\u043e\u043a\u0435\u0440\u043e\u0432, \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0432 \u0441\u043a\u0440\u0438\u043f\u0442 \/opt\/kafka\/current\/bin\/kafka-server-stop.sh  3.5 \u041f\u043e \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u0432\u044b\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0437\u0443\u043a\u0438\u043f\u0435\u0440\u043e\u0432 \u043d\u0430 \u0441\u0442\u0430\u0440\u044b\u0445 \u0441\u0435\u0440\u0432\u0435\u0440\u0430\u0445, \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0432 \u0441\u043a\u0440\u0438\u043f\u0442  \/home\/kafka\/scripts\/zkStop.sh  3.6 \u041d\u0430 \u043d\u043e\u0432\u044b\u0445 \u0441\u0435\u0440\u0432\u0435\u0440\u0430\u0445 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0441\u043a\u0440\u0438\u043f\u0442 (\u0443\u0434\u0430\u043b\u044f\u0435\u043c \u0441\u0442\u0430\u0440\u044b\u0445 \u0437\u0443\u043a\u0438\u043f\u0435\u0440\u043e\u0432 \u0438\u0437 \u043a\u043e\u043d\u0444\u0438\u0433\u0430 \u043d\u043e\u0432\u044b\u0445 \u0437\u0443\u043a\u0438\u043f\u0435\u0440\u043e\u0432) \/opt\/scripts\/zk-remove-old-servers.sh  3.7 \u041d\u0430 \u043d\u043e\u0432\u044b\u0445 \u0441\u0435\u0440\u0432\u0435\u0440\u0430\u0445 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0437\u0443\u043a\u0438\u043f\u0435\u0440\u043e\u0432  \/opt\/scripts\/zkRestart.sh  3.8 \u041d\u0430 \u043d\u043e\u0432\u044b\u0445 \u0441\u0435\u0440\u0432\u0435\u0440\u0430\u0445 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0441\u0442\u0430\u0442\u0443\u0441 \u0437\u0443\u043a\u0438\u043f\u0435\u0440\u043e\u0432 (\u043e\u0434\u0438\u043d \u043b\u0438\u0434\u0435\u0440, 2 \u0444\u043e\u043b\u043e\u0432\u0435\u0440\u0430)  \/opt\/scripts\/zkStatus.sh  3.9 \u041d\u0430 \u043d\u043e\u0432\u044b\u0445 \u0441\u0435\u0440\u0432\u0435\u0440\u0430\u0445 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0441\u043a\u0440\u0438\u043f\u0442 (\u0443\u0434\u0430\u043b\u044f\u0435\u043c \u0438\u0437 \u043a\u043e\u043d\u0444\u0438\u0433\u0430 \u0441\u0442\u0430\u0440\u044b\u0439 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b \u043e\u0431\u0449\u0435\u043d\u0438\u044f \u043c\u0435\u0436\u0434\u0443 \u0431\u0440\u043e\u043a\u0435\u0440\u0430\u043c\u0438) \/opt\/scripts\/remove-old-protocol.sh   3.10 \u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0447\u0442\u043e \u0432\u0441\u0435 \u0440\u0435\u043f\u043b\u0438\u043a\u0438 \u0432 \u0441\u0442\u0430\u0442\u0443\u0441\u0435 insync  \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0441\u043a\u0440\u0438\u043f\u0442 \/home\/kafka\/migration\/check-insync.sh  not insync \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0440\u0430\u0432\u043d\u043e 0  3.11 \u041f\u043e \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043d\u043e\u0432\u043e\u0433\u043e \u0431\u0440\u043e\u043a\u0435\u0440\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c  \/opt\/kafka\/current\/bin\/kafka-server-stop.sh  \u0434\u043e\u0436\u0434\u0430\u0442\u044c\u0441\u044f \u043f\u043e\u043a\u0430 \u0431\u0440\u043e\u043a\u0435\u0440 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c\u0441\u044f (ps aux | grep kafka \u0434\u043e\u043b\u0436\u0435\u043d \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0437\u0443\u043a\u0438\u043f\u0435\u0440\u0430)  \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \/opt\/kafka-start.sh  \u041f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u0442\u044c \u043a 3.10 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u0431\u0440\u043e\u043a\u0435\u0440\u0430  \u041c\u0438\u0433\u0440\u0430\u0446\u0438\u044f \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0430!<\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<p>\u041d\u0430\u0434\u0435\u044e\u0441\u044c, \u0447\u0442\u043e \u043a\u043e\u043c\u0443-\u0442\u043e \u043f\u043e\u043c\u043e\u0433 \u0432 \u044d\u0442\u043e\u043c \u0432\u043e\u043f\u0440\u043e\u0441\u0435. \u0416\u0434\u0443 \u0432\u0430\u0448\u0438\u0445 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u043e\u0432 \u0438 \u0437\u0430\u043c\u0435\u0447\u0430\u043d\u0438\u0439.<\/p>\n<p>\u0412\u0441\u0435 \u0441\u043a\u0440\u0438\u043f\u0442\u044b \u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u0434\u043b\u044f \u0440\u043e\u043b\u043b\u0431\u0435\u043a\u043e\u0432 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 <a href=\"https:\/\/github.com\/ryletka\/kafka-topics\" rel=\"noopener noreferrer nofollow\">\u0442\u0443\u0442<\/a><\/p>\n<\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/post\/541148\/\"> https:\/\/habr.com\/ru\/post\/541148\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"\n<div class=\"post__text post__text_v2\" id=\"post-content-body\">\n<h2>\u0412\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u0435<\/h2>\n<p>\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440! \u0420\u0430\u0431\u043e\u0442\u0430\u044e java \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u043e\u043c \u0432 \u043e\u0434\u043d\u043e\u0439 \u0444\u0438\u043d\u0430\u043d\u0441\u043e\u0432\u043e\u0439 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0438. \u0420\u0435\u0448\u0438\u043b \u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0441\u0432\u043e\u0439 \u0441\u043b\u0435\u0434 \u043d\u0430 \u0445\u0430\u0431\u0440\u0435 \u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043f\u0435\u0440\u0432\u0443\u044e \u0441\u0432\u043e\u044e \u0441\u0442\u0430\u0442\u044c\u044e. \u0412 \u0441\u0438\u043b\u0443 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0441 \u043d\u0430\u043b\u0438\u0447\u0438\u0435\u043c \u0434\u0435\u0432\u043e\u043f\u0441\u0435\u0440\u043e\u0432 \u043f\u0435\u0440\u0435\u0434\u043e \u043c\u043d\u043e\u0439 \u0431\u044b\u043b\u0430 \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0430 \u0437\u0430\u0434\u0430\u0447\u0430 \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u043a\u0430\u0444\u043a\u0438 \u0441 2.0 \u0434\u043e 2.6 \u0431\u0435\u0437 \u0434\u0430\u0443\u043d\u0442\u0430\u0439\u043c\u0430 \u0438 \u043f\u043e\u0442\u0435\u0440\u0438 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 (\u0441\u0430\u043c\u0438 \u043f\u043e\u043d\u0438\u043c\u0430\u0435\u0442\u0435, \u043d\u0438\u043a\u0442\u043e \u043d\u0435 \u043b\u044e\u0431\u0438\u0442, \u043a\u043e\u0433\u0434\u0430 \u0434\u0435\u043d\u0435\u0436\u043a\u0438 \u0437\u0430\u0432\u0438\u0441\u0430\u044e\u0442 \u0432 \u0432\u043e\u0437\u0434\u0443\u0445\u0435 \u0438\u043b\u0438 \u0433\u0434\u0435-\u0442\u043e \u0442\u0435\u0440\u044f\u044e\u0442\u0441\u044f). \u0425\u043e\u0447\u0443 \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u044d\u0442\u0438\u043c \u043e\u043f\u044b\u0442\u043e\u043c \u0441 \u0412\u0430\u043c\u0438 \u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u0438\u0432\u043d\u044b\u0439 \u0444\u0438\u0434\u0431\u0435\u043a. \u0418\u0442\u0430\u043a, \u0445\u0432\u0430\u0442\u0438\u0442 \u0432\u043e\u0434\u044b, \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u0441\u0440\u0430\u0437\u0443 \u043a \u0434\u0435\u043b\u0443.<\/p>\n<h2>\u0421\u0445\u0435\u043c\u0430 \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u0438<\/h2>\n<p>\u0417\u0430\u0434\u0430\u0447\u0430 \u0443\u0441\u043b\u043e\u0436\u043d\u044f\u043b\u0430\u0441\u044c \u0442\u0435\u043c, \u0447\u0442\u043e \u043d\u0430\u0434\u043e \u0431\u044b\u043b\u043e \u043c\u0438\u0433\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u043e \u0441\u0442\u0430\u0440\u044b\u0445 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u043e\u043a \u043d\u0430 \u043d\u043e\u0432\u044b\u0435, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0441 \u0442\u0435\u043c, \u0447\u0442\u043e\u0431\u044b \u0432\u044b\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0431\u0440\u043e\u043a\u0435\u0440\u0430, \u043f\u043e\u043c\u0435\u043d\u044f\u0442\u044c \u0431\u0438\u043d\u0430\u0440\u043d\u0438\u043a\u0438 \u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c, \u043c\u043d\u0435 \u043d\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u043b.<\/p>\n<p>\u041d\u0438\u0436\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0430 \u0441\u0445\u0435\u043c\u0430 \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u0438. \u0418\u043c\u0435\u0435\u043c 3 \u0431\u0440\u043e\u043a\u0435\u0440\u043e\u0432 \u043d\u0430 \u0441\u0442\u0430\u0440\u044b\u0445 \u0412\u041c, 3 \u0431\u0440\u043e\u043a\u0435\u0440\u043e\u0432 \u043d\u0430 \u043d\u043e\u0432\u044b\u0445 \u0412\u041c, \u0442\u0430\u043a\u0436\u0435 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0431\u0440\u043e\u043a\u0435\u0440\u0430 \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u0441\u0432\u043e\u0439 zookeeper.<\/p>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<h2>\u041f\u043b\u0430\u043d \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u0438<\/h2>\n<p>\u0414\u043b\u044f \u0442\u043e\u0433\u043e \u0447\u0442\u043e\u0431\u044b \u043d\u0430\u043c \u043c\u0438\u0433\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u044d\u0442\u043e\u0433\u043e \u043d\u0438\u043a\u0442\u043e \u043d\u0435 \u0437\u0430\u043c\u0435\u0442\u0438\u043b, \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f &#171;\u043d\u0435\u043c\u043d\u043e\u0433\u043e&#187; \u043f\u043e\u043f\u043e\u0442\u0435\u0442\u044c. \u041d\u0438\u0436\u0435 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d \u043e\u0431\u0449\u0438\u0439 \u043f\u043b\u0430\u043d. <\/p>\n<ol>\n<li>\n<p>\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0430\u0434\u0440\u0435\u0441\u0430 \u043d\u043e\u0432\u044b\u0445 \u0431\u0440\u043e\u043a\u0435\u0440\u043e\u0432<\/p>\n<\/li>\n<li>\n<p>\u041f\u0440\u043e\u0431\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f\u044b \u043c\u0435\u0436\u0434\u0443 \u0432\u0441\u0435\u043c\u0438 \u0438 \u0432\u0441\u044f<\/p>\n<\/li>\n<li>\n<p>\u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u0442\u044c \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u043d\u0430 \u043d\u043e\u0432\u044b\u0445 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u043a\u0430\u0445<\/p>\n<\/li>\n<li>\n<p>\u041f\u043e\u0434\u043d\u044f\u0442\u044c \u043d\u043e\u0432\u044b\u0439 \u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u0437\u0443\u043a\u0438\u043f\u0435\u0440\u043e\u0432 \u0438 \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0438\u0442\u044c \u0435\u0433\u043e \u0441\u043e \u0441\u0442\u0430\u0440\u044b\u043c<\/p>\n<\/li>\n<li>\n<p>\u041f\u043e\u0434\u043d\u044f\u0442\u044c \u043d\u043e\u0432\u044b\u0445 \u0431\u0440\u043e\u043a\u0435\u0440\u043e\u0432 \u043a\u0430\u0444\u043a\u0438<\/p>\n<\/li>\n<li>\n<p>\u041c\u0438\u0433\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u0441\u0435 \u043f\u0430\u0440\u0442\u0438\u0446\u0438\u0438 \u0441\u043e \u0441\u0442\u0430\u0440\u044b\u0445 \u0431\u0440\u043e\u043a\u0435\u0440\u043e\u0432 \u043d\u0430 \u043d\u043e\u0432\u044b\u0435<\/p>\n<\/li>\n<li>\n<p>\u041e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0441\u0442\u0430\u0440\u044b\u0435 \u0431\u0440\u043e\u043a\u0435\u0440\u044b \u043a\u0430\u0444\u043a\u0438 \u0438 \u0441\u0442\u0430\u0440\u044b\u0445 \u0437\u0443\u043a\u0438\u043f\u0435\u0440\u043e\u0432<\/p>\n<\/li>\n<li>\n<p>\u0423\u0431\u0440\u0430\u0442\u044c \u0438\u0437 \u043d\u043e\u0432\u044b\u0445 \u043a\u043e\u043d\u0444\u0438\u0433\u043e\u0432 \u0441\u0442\u0430\u0440\u044b\u0445 \u0431\u0440\u043e\u043a\u0435\u0440\u043e\u0432 \u0438 \u0437\u0443\u043a\u0438\u043f\u0435\u0440\u043e\u0432<\/p>\n<\/li>\n<\/ol>\n<p>\u0410 \u0442\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u0435\u0445\u0430\u043b\u0438 \u043f\u043e \u043f\u043e\u0440\u044f\u0434\u043a\u0443 \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0442\u044c \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043a\u0430\u0436\u0434\u044b\u0439 \u043f\u0443\u043d\u043a\u0442<\/p>\n<h2>\u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0431\u0440\u043e\u043a\u0435\u0440\u043e\u0432 \u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435<\/h2>\n<p>\u0421\u0430\u043c\u044b\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u043f\u0443\u043d\u043a\u0442. \u0412 \u043a\u043e\u0434\u0435 \u043a\u043b\u0438\u0435\u043d\u0442\u0430, \u0442\u0430\u043c \u0433\u0434\u0435 \u0431\u044b\u043b\u0438 \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u043d\u044b \u0430\u0434\u0440\u0435\u0441\u0430 \u0441\u0442\u0430\u0440\u044b\u0445 \u0431\u0440\u043e\u043a\u0435\u0440\u043e\u0432, \u0442\u0443\u0434\u0430 \u0436\u0435 \u0434\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u043d\u043e\u0432\u044b\u0445. \u0412 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e <strong>&#171;bootstrap.servers&#187;<\/strong>    <\/p>\n<details class=\"spoiler\">\n<summary>\u0421\u0442\u0440\u043e\u043a\u0430 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438<\/summary>\n<div class=\"spoiler__content\">\n<p><code>old-server1:9092,old-server2:9092,old-server3:9092,new-server4:9092,new-server5:9092,new-server6:9092<\/code><\/p>\n<\/div>\n<\/details>\n<h2>\u041f\u0440\u043e\u0431\u0438\u0442\u0438\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043e\u0432<\/h2>\n<p>\u041e\u0434\u043d\u043e \u0438\u0437 \u0441\u0430\u043c\u044b\u0445 \u043d\u0435\u043b\u044e\u0431\u0438\u043c\u044b\u0445 \u0437\u0430\u043d\u044f\u0442\u0438\u0439 &#8212; \u044d\u0442\u043e \u043f\u0440\u043e\u0431\u0438\u0442\u0438\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043e\u0432. \u0417\u0430\u044f\u0432\u043a\u0438 \u0441\u043e\u0433\u043b\u0430\u0441\u0443\u044e\u0442\u0441\u044f \u0434\u043e\u043b\u0433\u043e, \u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0442\u0441\u044f \u0435\u0449\u0435 \u0434\u043e\u043b\u044c\u0448\u0435. \u0414\u043e\u0441\u0442\u0443\u043f\u043e\u0432 \u043d\u0430\u043c \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u0437\u0430\u043a\u0430\u0437\u0430\u0442\u044c \u043d\u0435\u043c\u0430\u043b\u043e, \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0440\u0430\u0437\u0431\u0435\u0440\u0435\u043c\u0441\u044f \u043a\u0430\u043a\u0438\u0435 \u0438\u043c\u0435\u043d\u043d\u043e.<\/p>\n<ol>\n<li>\n<p>\u041a\u0430\u043a \u0432\u044b \u0443\u0436\u0435 \u0434\u043e\u0433\u0430\u0434\u0430\u043b\u0438\u0441\u044c \u043f\u043e \u0441\u0442\u0440\u043e\u043a\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0431\u0440\u043e\u043a\u0435\u0440\u043e\u0432, \u043d\u0430\u043c \u043d\u0443\u0436\u0435\u043d \u043f\u043e\u0440\u0442 9092 \u0432 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0438 \u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 -&gt; \u043d\u043e\u0432\u044b\u0435 \u0431\u0440\u043e\u043a\u0435\u0440\u044b \u043a\u0430\u0444\u043a\u0438 (\u0432 \u0441\u0443\u043c\u043c\u0435 3 \u0434\u043e\u0441\u0442\u0443\u043f\u0430)<\/p>\n<\/li>\n<li>\n<p>\u042d\u0442\u043e\u0442 \u0436\u0435 \u043f\u043e\u0440\u0442 \u0434\u043b\u044f \u041d\u043e\u0432\u044b\u0435 \u0431\u0440\u043e\u043a\u0435\u0440\u044b &lt;&#8212;-&gt; \u0421\u0442\u0430\u0440\u044b\u0435 \u0431\u0440\u043e\u043a\u0435\u0440\u044b (+18 \u0434\u043e\u0441\u0442\u0443\u043f\u043e\u0432)<\/p>\n<\/li>\n<li>\n<p>\u0412\u0441\u0435 \u0442\u043e\u0442 \u0436\u0435 \u043f\u043e\u0440\u0442 9092 \u043c\u0435\u0436\u0434\u0443 \u043a\u0430\u0436\u0434\u044b\u043c \u043d\u043e\u0432\u044b\u043c \u0431\u0440\u043e\u043a\u0435\u0440\u043e\u043c (+6 \u0434\u043e\u0441\u0442\u0443\u043f\u043e\u0432)<\/p>\n<\/li>\n<li>\n<p>\u0410\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u044b\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u044b \u0438\u0437 \u043f\u0443\u043d\u043a\u0442\u043e\u0432 2 \u0438 3 \u0434\u043b\u044f \u043f\u043e\u0440\u0442\u043e\u0432 \u0437\u0443\u043a\u0438\u043f\u0435\u0440\u043e\u0432: 2181, 2888, 3888 ( (18+6)*3 = 72)<\/p>\n<\/li>\n<\/ol>\n<p>\u0418\u0442\u043e\u0433\u043e: 99 \u0434\u043e\u0441\u0442\u0443\u043f\u043e\u0432. \u041f\u043e\u043b\u0443\u0447\u0438\u0442\u0435 \u0438 \u0440\u0430\u0441\u043f\u0438\u0448\u0438\u0442\u0435\u0441\u044c! \u0410 \u043f\u043e\u0442\u043e\u043c \u0435\u0449\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u0432\u0441\u0435. <\/p>\n<details class=\"spoiler\">\n<summary><\/summary>\n<div class=\"spoiler__content\">\n<p>\u043e\u0431\u0438\u0434\u043d\u043e \u0447\u0442\u043e \u0434\u043e 100 \u043d\u0435 \u0434\u043e\u0442\u044f\u043d\u0443\u043b\u0438, \u0431\u044b\u043b\u043e \u0431\u044b \u043f\u043e\u0441\u043e\u043b\u0438\u0434\u043d\u0435\u0435<\/p>\n<\/div>\n<\/details>\n<p>\u041a\u043e\u0433\u0434\u0430 \u043c\u044b \u043f\u0440\u043e\u0448\u043b\u0438 \u0447\u0435\u0440\u0435\u0437 \u044d\u0442\u0438 \u0441\u0442\u0440\u0430\u0434\u0430\u043d\u0438\u044f \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u043b\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u044b, \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0430\u0435\u043c \u043a \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0435 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b.<\/p>\n<h2>\u0418\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u043d\u043e\u0432\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430<\/h2>\n<p>\u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f kafka \u043d\u0430 \u043d\u043e\u0432\u044b\u0445 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u043a\u0430\u0445<\/p>\n<p>\u0414\u0430\u043b\u0435\u0435 \u043e\u0447\u0435\u043d\u044c \u0432\u0430\u0436\u043d\u044b\u0439 \u043f\u0443\u043d\u043a\u0442 &#8212; \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u0442\u044c \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e kafka. \u0410 \u0438\u043c\u0435\u043d\u043d\u043e, \u0432 \u0444\u0430\u0439\u043b\u0435 <strong>\/etc\/security\/limits.conf<\/strong> \u0434\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u0441\u0442\u0440\u043e\u043a\u0438 <\/p>\n<pre><code class=\"bash\">kafka hard nofile 262144 kafka soft nofile 262144<\/code><\/pre>\n<p>\u0415\u0441\u043b\u0438 \u043c\u044b \u044d\u0442\u043e\u0433\u043e \u043d\u0435 \u0441\u0434\u0435\u043b\u0430\u0435\u043c, \u0442\u043e \u044d\u0442\u043e \u0433\u0440\u043e\u0437\u0438\u0442 \u043d\u0430\u043c \u0432\u043d\u0435\u0437\u0430\u043f\u043d\u044b\u043c \u043f\u0430\u0434\u0435\u043d\u0438\u0435\u043c \u0431\u0440\u043e\u043a\u0435\u0440\u0430, \u0442\u0430\u043a \u043a\u0430\u043a \u043a\u0430\u0444\u043a\u0430 \u043f\u043e \u0441\u0432\u043e\u0435\u0439 \u043f\u0440\u0438\u0440\u043e\u0434\u0435 \u043b\u044e\u0431\u0438\u0442 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0442\u044c \u043c\u043d\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u043e\u0432, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0430\u0434\u043e \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u0442\u044c\u0441\u044f \u043a \u0435\u0435 \u0430\u043f\u043f\u0435\u0442\u0438\u0442\u0430\u043c.<\/p>\n<p>\u0427\u0435\u0441\u0442\u043d\u043e \u0433\u043e\u0432\u043e\u0440\u044f, \u0447\u0438\u0441\u043b\u043e 262144, \u0432\u0437\u044f\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u043d\u0430 \u0441\u0442\u0430\u0440\u043e\u043c \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435 \u0431\u044b\u043b\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e \u0442\u0430\u043a\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 (\u0438\u0441\u0442\u043e\u0440\u0438\u0447\u0435\u0441\u043a\u0438 \u0441\u043b\u043e\u0436\u0438\u043b\u043e\u0441\u044c). \u0425\u043e\u0442\u044f \u0443 \u043d\u0430\u0441 \u043a\u0430\u0444\u043a\u0430 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u043d\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 10 \u0442\u044b\u0441\u044f\u0447 \u0444\u0430\u0439\u043b\u043e\u0432, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0440\u043e\u0432\u0435\u0441\u0442\u0438 \u0430\u043d\u0430\u043b\u0438\u0437 \u0438 \u0432\u044b\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0435\u0435.<\/p>\n<\/p>\n<p>\u0414\u0430\u043b\u0435\u0435 \u043d\u0430\u043c \u043d\u0430\u0434\u043e \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e \u0441\u0440\u0435\u0434\u044b \u043a java<\/p>\n<p>\u0432 \u0444\u0430\u0439\u043b \/home\/kafka\/.bash_profile \u0434\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c<\/p>\n<pre><code class=\"bash\">export JAVA_HOME=\/opt\/java export PATH=JAVA_HOME\/bin:PATH<\/code><\/pre>\n<p>\u0421\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0443 \u0432\u0430\u0441 \u0434\u043e\u043b\u0436\u043d\u0430 \u043b\u0435\u0436\u0430\u0442\u044c jre \u0432 \u043f\u0430\u043f\u043a\u0435 \/opt\/java<\/p>\n<p>\u0414\u0430\u043b\u0435\u0435 \u0440\u0430\u0441\u043a\u0438\u0434\u044b\u0432\u0430\u0435\u043c \u043f\u0430\u043f\u043a\u0438 \u043f\u043e \u043d\u0443\u0436\u043d\u044b\u043c \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044f\u043c \u0438 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u043f\u0440\u0430\u0432\u0430<\/p>\n<p>\u041d\u0438\u0436\u0435 \u043e\u043f\u0438\u0441\u0430\u043d \u0441\u043a\u0440\u0438\u043f\u0442, \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u044e\u0449\u0438\u0439, \u0442\u043e \u0447\u0442\u043e \u044f \u043e\u043f\u0438\u0441\u0430\u043b \u0432\u044b\u0448\u0435.  \u0415\u0433\u043e \u043d\u0430\u0434\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u043c \u043d\u043e\u0432\u043e\u043c \u0431\u0440\u043e\u043a\u0435\u0440\u0435.<\/p>\n<details class=\"spoiler\">\n<summary>setup.sh<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"bash\">tar -xf ..\/jdk1.8.0_181.tar.gz -C \/opt\/ mv \/home\/kafka\/kafka \/opt mv \/home\/kafka\/zookeeper \/opt mv \/home\/kafka\/kafka-start.sh \/opt mv \/home\/kafka\/scripts \/opt  ln -sfn \/opt\/kafka\/kafka_2.13-2.6.0 \/opt\/kafka\/current ln -sfn \/opt\/zookeeper\/zookeeper-3.6.2 \/opt\/zookeeper\/current ln -sfn \/opt\/jdk1.8.0_181\/ \/opt\/java  chown -R kafka:kafka \/opt chmod -R 700 \/opt  #env_var start -------------------------------&gt;  kafkaProfile=\/home\/kafka\/.bash_profile  homeVar=\"export JAVA_HOME=\/opt\/java\" javaHome=$(cat $kafkaProfile | grep \"$homeVar\")   if [ \"$javaHome\" != \"$homeVar\" ]; then     echo -e \"\\n$homeVar\\n\" &gt;&gt; $kafkaProfile fi   pathVar=\"export PATH=\\$JAVA_HOME\/bin:\\$PATH\" path=$(cat $kafkaProfile | grep \"$pathVar\")  if [ \"$path\" != \"$pathVar\" ]; then     echo -e \"\\n$pathVar\\n\" &gt;&gt; $kafkaProfile fi  #env_var end ---------------------------------&gt;     #ulimit start &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;  limitsFile=\/etc\/security\/limits.conf  soft=\"kafka soft nofile 262144\" limitSoft=$(cat $limitsFile | grep \"$soft\")  if [ \"$limitSoft\" != \"$soft\" ]; then     echo -e \"\\n$soft\\n\" &gt;&gt; $limitsFile fi   hard=\"kafka hard nofile 262144\" limitHard=$(cat $limitsFile | grep \"$hard\")  if [ \"$limitHard\" != \"$hard\" ]; then     echo -e \"\\n$hard\\n\" &gt;&gt; $limitsFile fi  #ulimit end &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<p>\u0414\u0430\u043b\u0435\u0435 \u0438\u0437 \u043f\u043e\u0434 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f kafka \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u0447\u0442\u043e \u0443 \u043d\u0430\u0441 \u0432\u0441\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e<\/p>\n<pre><code class=\"bash\">ulimit -n  = 262144 echo $JAVA_HOME  = \/opt\/java echo $PATH  \u0434\u043e\u043b\u0436\u0435\u043d \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \/opt\/java\/bin<\/code><\/pre>\n<h2>\u041d\u043e\u0432\u044b\u0439 \u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u0437\u0443\u043a\u0438\u043f\u0435\u0440\u043e\u0432<\/h2>\n<p>\u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c, \u0447\u0442\u043e \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0435 \u043d\u043e\u0432\u044b\u0445 \u0437\u0443\u043a\u0438\u043f\u0435\u0440\u043e\u0432 \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u043d\u044b \u0432\u0441\u0435 \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0438 \u0430\u043d\u0441\u0430\u0431\u043b\u044f, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u0430 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044f, \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0437\u0443\u043a\u0438\u043f\u0435\u0440\u0430, \u0433\u0434\u0435 \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u0444\u0430\u0439\u043b <strong>myid<\/strong>, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u043d\u044b id \u0437\u0443\u043a\u0438\u043f\u0435\u0440\u043e\u0432.<\/p>\n<p>\u043d\u0438\u0436\u0435 \u043a\u0443\u0441\u043e\u043a \u0444\u0430\u0439\u043b\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0437\u0443\u043a\u0438\u043f\u0435\u0440\u0430 <strong>\/opt\/zookeeper\/current\/conf\/zoo.cfg<\/strong><\/p>\n<details class=\"spoiler\">\n<summary>zoo.cfg<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"bash\">dataDir=\/opt\/zookeeper\/zookeeper-data server.1=server1:2888:3888 server.2=server2:2888:3888 server.3=server3:2888:3888  server.4=server4:2888:3888 server.5=server5:2888:3888 server.6=server6:2888:3888<\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<p>\u0421\u0442\u0430\u0440\u0442\u0443\u0435\u043c \u0432\u0441\u0435 \u0437\u0443\u043a\u0438\u043f\u0435\u0440\u044b <strong>\/opt\/zookeeper\/current\/bin\/zkServer.sh start<\/strong><\/p>\n<p>\u0414\u0430\u043b\u0435\u0435 \u043d\u0430\u043c \u043d\u0430\u0434\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432 \u043a\u043e\u043d\u0444\u0438\u0433 \u0441\u0442\u0430\u0440\u044b\u0445 \u0437\u0443\u043a\u0438\u043f\u0435\u0440\u043e\u0432 \u043d\u043e\u0432\u044b\u0445 \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u043e\u0432. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0430 <strong>\u0441\u0442\u0430\u0440\u044b\u0445<\/strong> \u0441\u0435\u0440\u0432\u0435\u0440\u0430\u0445 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u0442\u0430\u043a\u043e\u0439 \u0441\u043a\u0440\u0438\u043f\u0442<\/p>\n<details class=\"spoiler\">\n<summary>zk-add-new-servers.sh<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"bash\">echo -e \"\\nserver.4=server4:2888:3888\" &gt;&gt; \/opt\/zookeeper\/zookeeper-3.4.13\/conf\/zoo.cfg echo -e \"\\nserver.5=server5:2888:3888\" &gt;&gt; \/opt\/zookeeper\/zookeeper-3.4.13\/conf\/zoo.cfg echo -e \"\\nserver.6=server6:2888:3888\" &gt;&gt; \/opt\/zookeeper\/zookeeper-3.4.13\/conf\/zoo.cfg<\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0443\u0436\u043d\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u043a\u0442\u043e \u0438\u0437 \u0437\u0443\u043a\u0438\u043f\u0435\u0440\u043e\u0432 \u0431\u044b\u043b \u043b\u0438\u0434\u0435\u0440\u043e\u043c, \u0438 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0432\u0441\u0435 \u0437\u0443\u043a\u0438\u043f\u0435\u0440\u044b. \u041b\u0438\u0434\u0435\u0440\u0430 \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u044e\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c.<\/p>\n<pre><code class=\"bash\">\/opt\/zookeeper\/zookeeper-3.4.13\/bin\/zkServer.sh restart<\/code><\/pre>\n<p>\u041d\u0430\u043a\u043e\u043d\u0435\u0446 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c, \u0447\u0442\u043e \u0432\u0441\u0435 \u0437\u0443\u043a\u0438\u043f\u0435\u0440\u044b \u0443\u0432\u0438\u0434\u0435\u043b\u0438 \u0434\u0440\u0443\u0433 \u0434\u0440\u0443\u0433\u0430 \u0438 \u0432\u044b\u0431\u0440\u0430\u043b\u0438 \u043b\u0438\u0434\u0435\u0440\u0430. \u0412\u0435\u0437\u0434\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c<\/p>\n<pre><code class=\"bash\">...\/zkServer.sh status<\/code><\/pre>\n<p>\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0430\u043d\u0441\u0430\u043c\u0431\u043b\u044f \u0437\u0443\u043a\u0438\u043f\u0435\u0440\u043e\u0432 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0430.<\/p>\n<h2>\u041f\u043e\u0434\u043d\u044f\u0442\u0438\u0435 \u043d\u043e\u0432\u044b\u0445 \u0431\u0440\u043e\u043a\u0435\u0440\u043e\u0432<\/h2>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043d\u044f\u0442\u044c\u0441\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u043e\u043c \u043d\u043e\u0432\u044b\u0445 \u0431\u0440\u043e\u043a\u0435\u0440\u043e\u0432, \u043d\u043e \u043f\u0435\u0440\u0435\u0434 \u044d\u0442\u0438\u043c \u043d\u0443\u0436\u043d\u043e \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f \u0447\u0442\u043e \u0432 <strong>server.properties<\/strong> \u0443 \u043d\u0430\u0441 \u043f\u0440\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d <strong>broker.id<\/strong> \u0438 <strong>zookeeper.connect<\/strong><\/p>\n<p>\u041f\u0440\u0438\u043c\u0435\u0440 \u0434\u043b\u044f 4 \u0431\u0440\u043e\u043a\u0435\u0440\u0430<\/p>\n<pre><code class=\"bash\">broker.id=4 zookeeper.connect=server4:2181,server5:2181,server6:2181\/cluster_name<\/code><\/pre>\n<\/p>\n<p>\u0417\u0434\u0435\u0441\u044c \u043c\u044b \u0443\u043a\u0430\u0437\u0430\u043b\u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u043e\u0432\u044b\u0445 \u0437\u0443\u043a\u0438\u043f\u0435\u0440\u043e\u0432, \u043d\u043e \u0442\u0430\u043a \u043a\u0430\u043a \u043e\u043d\u0438 \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0432 \u0430\u043d\u0441\u0430\u043c\u0431\u043b\u0435, \u0442\u043e \u043d\u043e\u0432\u044b\u0435 \u0431\u0440\u043e\u043a\u0435\u0440\u044b \u0443\u0437\u043d\u0430\u044e\u0442 \u0447\u0435\u0440\u0435\u0437 \u043d\u0438\u0445 \u043e \u0441\u0442\u0430\u0440\u043e\u043c \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435.<\/p>\n<p>\u0422\u0430\u043a\u0436\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0442\u0430\u043c \u0436\u0435 \u0432 <strong>server.properties <\/strong>\u043f\u0440\u043e\u043f\u0438\u0441\u0430\u0442\u044c \u0442\u0435\u043a\u0443\u0449\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u043c\u0435\u0436\u0434\u0443 \u0431\u0440\u043e\u043a\u0435\u0440\u0430\u043c\u0438 (2.0.0). \u0418\u043d\u0430\u0447\u0435 \u043c\u044b \u043d\u0435 \u0441\u043c\u043e\u0436\u0435\u043c \u043f\u0435\u0440\u0435\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u043f\u0430\u0440\u0442\u0438\u0446\u0438\u0438. <\/p>\n<pre><code>inter.broker.protocol.version=2.0.0<\/code><\/pre>\n<p>\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u043d\u043e\u0432\u044b\u0445 \u0431\u0440\u043e\u043a\u0435\u0440\u043e\u0432<\/p>\n<pre><code class=\"bash\">nohup \/opt\/kafka\/current\/bin\/kafka-server-start.sh \/opt\/kafka\/config\/server.properties &gt; log.log 2&gt;&amp;1 &amp;<\/code><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0447\u0442\u043e \u043d\u043e\u0432\u044b\u0435 \u0431\u0440\u043e\u043a\u0435\u0440\u044b \u043f\u0440\u0438\u0441\u043e\u0435\u0434\u0438\u043d\u0438\u043b\u0438\u0441\u044c \u043a \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0443. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0437\u0430\u0445\u043e\u0434\u0438\u043c \u0432 cli \u043b\u044e\u0431\u043e\u0433\u043e \u0438\u0437 \u0437\u0443\u043a\u0438\u043f\u0435\u0440\u043e\u0432.<\/p>\n<pre><code class=\"bash\">\/opt\/zookeeper\/current\/bin\/zkCli.sh<\/code><\/pre>\n<p>\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u0442\u0430\u043c \u043a\u043e\u043c\u0430\u043d\u0434\u0443<\/p>\n<pre><code class=\"bash\">ls \/cluster_name\/brokers\/ids<\/code><\/pre>\n<p>\u0414\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0432\u044b\u0432\u0435\u0434\u0435\u043d \u0442\u0430\u043a\u043e\u0439 \u043e\u0442\u0432\u0435\u0442<\/p>\n<pre><code>[1,2,3,4,5,6]<\/code><\/pre>\n<p>\u042d\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442 \u0447\u0442\u043e \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435 \u0443 \u043d\u0430\u0441 \u0432\u0441\u0435 6 \u0448\u0442\u0443\u043a \u0431\u0440\u043e\u043a\u0435\u0440\u043e\u0432, \u0447\u0435\u0433\u043e \u043c\u044b \u0438 \u0434\u043e\u0431\u0438\u0432\u0430\u043b\u0438\u0441\u044c.<\/p>\n<h2>\u041f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u043f\u0430\u0440\u0442\u0438\u0446\u0438\u0439<\/h2>\n<p>\u0421\u0435\u0439\u0447\u0430\u0441 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0441\u0430\u043c\u043e\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0435. \u0418\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u0433\u0434\u0435-\u0442\u043e \u0441\u0438\u0434\u0435\u043b\u043e \u0432 \u0433\u043e\u043b\u043e\u0432\u0435, \u0430 \u0438\u043d\u043e\u0433\u0434\u0430 \u0438 \u043f\u043e\u0434\u043a\u0440\u0435\u043f\u043b\u044f\u043b\u043e\u0441\u044c \u0447\u0430\u0442\u0438\u043a\u0430\u043c\u0438 \u043f\u043e \u043a\u0430\u0444\u043a\u0435, \u0447\u0442\u043e \u043f\u0430\u0440\u0442\u0438\u0446\u0438\u0438 \u0441\u0430\u043c\u0438 \u043f\u0435\u0440\u0435\u0435\u0434\u0443\u0442, \u043d\u0443\u0436\u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0434\u043d\u044f\u0442\u044c \u043d\u043e\u0432\u044b\u0445 \u0431\u0440\u043e\u043a\u0435\u0440\u043e\u0432 \u0438 \u043f\u043e\u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u0433\u0430\u0441\u0438\u0442\u044c \u0441\u0442\u0430\u0440\u044b\u0435. replication.factor \u0434\u043e\u043b\u0436\u0435\u043d \u0441\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0438 \u0440\u0435\u043f\u043b\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u0441\u0435 \u043d\u0430 \u043d\u043e\u0432\u044b\u0445 \u0431\u0440\u043e\u043a\u0435\u0440\u043e\u0432. \u0412 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0432\u0441\u0435 \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u043d\u0435 \u0442\u0430\u043a \u043f\u0440\u043e\u0441\u0442\u043e. \u0422\u0435\u043a\u0443\u0449\u0438\u0435 \u043f\u0430\u0440\u0442\u0438\u0446\u0438\u0438 \u043c\u0435\u0440\u0442\u0432\u043e \u043f\u0440\u0438\u043a\u043b\u0435\u0435\u043d\u044b \u043a \u0441\u0442\u0430\u0440\u044b\u043c \u0431\u0440\u043e\u043a\u0435\u0440\u0430\u043c \u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043d\u043e\u0432\u044b\u0445 \u0442\u043e\u043f\u0438\u043a\u043e\u0432 \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u043a \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u044e \u043f\u0430\u0440\u0442\u0438\u0446\u0438\u0439 \u043d\u0430 \u043d\u043e\u0432\u044b\u0445 \u0431\u0440\u043e\u043a\u0435\u0440\u0430\u0445.<\/p>\n<p>\u0417\u0430\u0433\u043b\u044f\u043d\u0443\u0432 \u0432 <a href=\"https:\/\/kafka.apache.org\/20\/documentation.html#basic_ops_cluster_expansion\" rel=\"noopener noreferrer nofollow\">\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044e<\/a> \u044f \u0443\u0432\u0438\u0434\u0435\u043b , \u0447\u0442\u043e \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u043f\u0430\u0440\u0442\u0438\u0446\u0438\u0439 &#171;\u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435&#187;, \u043d\u043e \u043d\u0430\u0434\u043e \u043f\u0440\u043e\u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0435\u043c\u0430\u043b\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043c\u0430\u043d\u0438\u043f\u0443\u043b\u044f\u0446\u0438\u0439, \u0447\u0442\u043e\u0431\u044b \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0432\u0441\u0435 \u044d\u0442\u043e \u0434\u0435\u043b\u043e. <\/p>\n<p>\u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0443\u0436\u043d\u043e \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c json \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043d\u0430\u0434\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0432\u0441\u0435 \u0442\u043e\u043f\u0438\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0430\u0442\u044c\u0441\u044f.<\/p>\n<pre><code class=\"json\">{\"topics\": [{\"topic\": \"foo1\"},               {\"topic\": \"foo2\"}],   \"version\":1  }<\/code><\/pre>\n<p>\u0422\u0430\u043a \u043a\u0430\u043a \u0442\u043e\u043f\u0438\u043a\u043e\u0432 \u0443 \u043d\u0430\u0441 \u0431\u044b\u043b\u043e \u043c\u043d\u043e\u0433\u043e, \u044f \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u043b \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0442\u0430\u043a\u0438\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 <\/p>\n<p>\u0414\u0430\u043b\u0435\u0435 \u0432\u0441\u0435 \u044d\u0442\u0438 json \u0444\u0430\u0439\u043b\u044b \u043d\u0430\u0434\u043e \u0441\u043a\u043e\u0440\u043c\u0438\u0442\u044c \u0443\u0442\u0438\u043b\u0438\u0442\u0435 <strong>kafka-reassign-partitions.sh <\/strong>\u0441 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u043c             <strong>&#8212;generate <\/strong>\u0438 \u0443\u043a\u0430\u0437\u0430\u0442\u044c id \u0431\u0440\u043e\u043a\u0435\u0440\u043e\u0432 \u043a\u0443\u0434\u0430 \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u043f\u0435\u0440\u0435\u0435\u0445\u0430\u0442\u044c <strong>&#8212;broker-list &#171;4,5,6&#187;<\/strong>.<\/p>\n<p>\u0423 \u043d\u0430\u0441 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0444\u0430\u0439\u043b\u043e\u0432 \u0442\u0430\u043a\u043e\u0433\u043e \u0432\u0438\u0434\u0430<\/p>\n<details class=\"spoiler\">\n<summary>generate1.json<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"json\">{\"version\":1,   \"partitions\":[{\"topic\":\"foo1\",\"partition\":2,\"replicas\":[1,2,3]},                 {\"topic\":\"foo1\",\"partition\":0,\"replicas\":[3,2,1]},                 {\"topic\":\"foo2\",\"partition\":2,\"replicas\":[1,2,3]},                 {\"topic\":\"foo2\",\"partition\":0,\"replicas\":[3,2,1]},                 {\"topic\":\"foo1\",\"partition\":1,\"replicas\":[2,3,1]},                 {\"topic\":\"foo2\",\"partition\":1,\"replicas\":[2,3,1]}]   }    Proposed partition reassignment configuration    {\"version\":1,   \"partitions\":[{\"topic\":\"foo1\",\"partition\":2,\"replicas\":[5,4,6]},                 {\"topic\":\"foo1\",\"partition\":0,\"replicas\":[4,5,6]},                 {\"topic\":\"foo2\",\"partition\":2,\"replicas\":[6,4,5]},                 {\"topic\":\"foo2\",\"partition\":0,\"replicas\":[4,5,6]},                 {\"topic\":\"foo1\",\"partition\":1,\"replicas\":[5,4,6]},                 {\"topic\":\"foo2\",\"partition\":1,\"replicas\":[4,5,6]}]   }<\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<p>\u0412\u0441\u0435 \u0447\u0442\u043e \u0438\u0434\u0435\u0442 \u0434\u043e <strong>Proposed partition reassignment configuration <\/strong>\u044d\u0442\u043e \u0442\u0435\u043a\u0443\u0449\u0435\u0435 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043f\u0430\u0440\u0442\u0438\u0446\u0438\u0439 (\u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u0433\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u0434\u043b\u044f \u0440\u043e\u043b\u043b\u0431\u0435\u043a\u0430). \u0412\u0441\u0435 \u0447\u0442\u043e \u043f\u043e\u0441\u043b\u0435 &#8212; \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043f\u043e\u0441\u043b\u0435 \u043f\u0435\u0440\u0435\u0435\u0437\u0434\u0430. \u0421\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043d\u0430\u043c \u043d\u0430\u0434\u043e \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u0432\u0441\u0435 \u044d\u0442\u0438 \u043d\u0438\u0436\u043d\u0438\u0435 \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u044b \u0441\u043e \u0432\u0441\u0435\u0445 \u0444\u0430\u0439\u043b\u043e\u0432, \u0441\u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u043e\u0432\u044b\u0435 json. <\/p>\n<p>\u0422\u0430\u043a \u043a\u0430\u043a \u0432\u0441\u0435 \u044d\u0442\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u0440\u0443\u043a\u0430\u043c\u0438 \u043d\u0443 \u043e\u043e\u043e\u0447\u0435\u043d\u044c \u0434\u043e\u043b\u0433\u043e. \u044f &#171;\u0431\u044b\u0441\u0442\u0440\u043e&#187; \u043d\u0430\u043a\u0430\u0442\u0430\u043b \u0441\u043a\u0440\u0438\u043f\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 \u0432\u0441\u0435 \u044d\u0442\u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0438 \u0440\u0435\u0436\u0435\u0442 \u0444\u0430\u0439\u043b\u044b \u043a\u0430\u043a \u043d\u0430\u043c \u043d\u0430\u0434\u043e. \u0417\u0430 \u0440\u0435\u0437\u043a\u0443 \u0444\u0430\u0439\u043b\u043e\u0432 \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u0434\u0436\u0430\u0440\u043d\u0438\u043a <strong>kafka-reassign-helper.jar <\/strong>\u043a\u043e\u0434 \u043c\u043e\u0436\u043d\u043e \u0433\u043b\u044f\u043d\u0443\u0442\u044c <a href=\"https:\/\/github.com\/ryletka\/kafka-topics\/blob\/main\/src\/main\/java\/ru\/kafka\/Main.java\" rel=\"noopener noreferrer nofollow\">\u0442\u0443\u0442<\/a>.<\/p>\n<p>\u041d\u0438\u0436\u0435 \u0441\u043a\u0440\u0438\u043f\u0442 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0438 \u0444\u0430\u0439\u043b\u043e\u0432 \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0435\u0437\u0434\u0430 \u043f\u0430\u0440\u0442\u0438\u0446\u0438\u0439<\/p>\n<details class=\"spoiler\">\n<summary>prepare-for-reassignment.sh<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"bash\">#\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u0437\u0430 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e<\/code><\/pre>\n<\/div>\n<\/details>\n<\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-317578","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/317578","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=317578"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/317578\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=317578"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=317578"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=317578"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}