{"id":308623,"date":"2020-08-18T09:00:53","date_gmt":"2020-08-18T09:00:53","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=308623"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=308623","title":{"rendered":"\u041f\u043e\u0434\u043d\u0438\u043c\u0430\u0435\u043c \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0435 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435 \u0432 Kubernetes: Apache Kafka, Kafka Connect, MirrorMaker 2.0 \u0438 Jmeter"},"content":{"rendered":"\n<div class=\"post__text post__text-html post__text_v1\" id=\"post-content-body\" data-io-article-url=\"https:\/\/habr.com\/ru\/post\/515584\/\">\n<p>\u042f \u0438\u043d\u0436\u0435\u043d\u0435\u0440 \u043f\u043e \u043d\u0430\u0433\u0440\u0443\u0437\u043e\u0447\u043d\u043e\u043c\u0443 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044e \u0438 \u043d\u0435 \u0442\u0430\u043a \u0434\u0430\u0432\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u044e \u043d\u0430\u0434 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u043c, \u0433\u0434\u0435 \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 Apache Kafka. \u0418\u0437-\u0437\u0430 \u0440\u0435\u0436\u0438\u043c\u0430 \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u043c\u0443 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044e \u0437\u0430\u0442\u044f\u043d\u0443\u043b\u043e\u0441\u044c \u043d\u0430 \u043d\u0435\u0434\u0435\u043b\u0438. \u0427\u0442\u043e\u0431\u044b \u043d\u0435 \u0442\u0435\u0440\u044f\u0442\u044c \u0432\u0440\u0435\u043c\u044f \u044f \u0440\u0435\u0448\u0438\u043b \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044c \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0441\u0442\u0435\u043d\u0434 \u0432 Kubernetes.<\/p>\n<p>  <\/p>\n<p>\u041a\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u043b \u0441 Apache Kafka \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442, \u0447\u0442\u043e \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u0430\u044f \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u043f\u043e\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u0434\u0430\u043b\u0435\u043a\u043e \u043d\u0435 \u0432\u0441\u0435 \u0442\u043e\u043d\u043a\u043e\u0441\u0442\u0438 \u0438\u043d\u0441\u0442\u0430\u043b\u043b\u044f\u0446\u0438\u0438 \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438. \u042f \u043d\u0430\u0434\u0435\u044e\u0441\u044c, \u0447\u0442\u043e \u0434\u0430\u043d\u043d\u0430\u044f \u043f\u043e\u0448\u0430\u0433\u043e\u0432\u0430\u044f \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u0432\u0430\u043c \u0441\u043e\u043a\u0440\u0430\u0442\u0438\u0442\u044c \u0432\u0440\u0435\u043c\u044f \u0440\u0430\u0437\u0432\u0435\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u044f \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0433\u043e \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f. \u041e\u0431\u0440\u0430\u0449\u0430\u044e \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 stateful \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430\u0445 \u2014 \u0434\u0430\u043b\u0435\u043a\u043e \u043d\u0435 \u043b\u0443\u0447\u0448\u0430\u044f \u0438\u0434\u0435\u044f, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u0430\u043d\u043d\u0430\u044f \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f \u043d\u0435 \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0430 \u0434\u043b\u044f \u0440\u0430\u0437\u0432\u0435\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u044f \u043f\u0440\u043e\u043c\u044b\u0448\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0441\u0442\u0435\u043d\u0434\u0430.<\/p>\n<p>  <\/p>\n<p>\u0418\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u044b \u0432 VirtualBox, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443 \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0443 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443 Docker, Kubernetes \u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0430. \u0412 Kubernetes \u0440\u0430\u0437\u0432\u0435\u0440\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0434\u0432\u0430 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 Apache Kafka: &quot;production&quot; \u0438 &quot;backup&quot;. \u0414\u043b\u044f \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u0438\u0437 production \u0432 backup \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f MirrorMaker 2.0. \u0412\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u043c\u0435\u0436\u0434\u0443 \u0443\u0437\u043b\u0430\u043c\u0438 production \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 \u0437\u0430\u0449\u0438\u0449\u0435\u043d\u043e TLS. \u041a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u043d\u0435 \u043c\u043e\u0433\u0443 \u0432\u044b\u043b\u043e\u0436\u0438\u0442\u044c \u0432 Git \u0441\u043a\u0440\u0438\u043f\u0442 \u0434\u043b\u044f \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0432. \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b \u0438\u0437 \u0430\u0440\u0445\u0438\u0432\u0430 certs\/certs.tar.gz. \u0412 \u0441\u0430\u043c\u043e\u043c \u043a\u043e\u043d\u0446\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0440\u0430\u0437\u0432\u0435\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u0435 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 Jmeter \u0438 \u0437\u0430\u043f\u0443\u0441\u043a \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0433\u043e \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u044f.<\/p>\n<p><a name=\"habracut\"><\/a>  <\/p>\n<p>\u0418\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f \u0440\u0430\u0441c\u0447\u0438\u0442\u0430\u043d\u0430 \u043d\u0430 \u043d\u043e\u0432\u0438\u0447\u043a\u043e\u0432 \u0432 Kubernetes, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0435\u0441\u043b\u0438 \u0432\u044b \u0443\u0436\u0435 \u0438\u043c\u0435\u0435\u0442\u0435 \u043e\u043f\u044b\u0442 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430\u043c\u0438, \u0442\u043e \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u0440\u0430\u0437\u0443 \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u0432 \u0440\u0430\u0437\u0434\u0435\u043b <a href=\"#deploy-cluster\">&quot;12. \u0420\u0430\u0437\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0435\u043c \u043a\u043b\u0430\u0441\u0442\u0435\u0440 Apache Kafka&quot;<\/a>.<\/p>\n<p>  <\/p>\n<h3 id=\"qa\">Q&amp;A:<\/h3>\n<p>  <\/p>\n<ul>\n<li><b>\u041f\u043e\u0447\u0435\u043c\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f Ubuntu?<\/b> \u0418\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u044f \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u043b Kubernetes \u0432 CentOS 7, \u043d\u043e \u043f\u043e\u0441\u043b\u0435 \u043e\u0434\u043d\u043e\u0433\u043e \u0438\u0437 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0439 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u043b\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c. \u041a \u0442\u043e\u043c\u0443 \u0436\u0435 \u044f \u0437\u0430\u043c\u0435\u0442\u0438\u043b, \u0447\u0442\u043e \u0432 CentOS \u043d\u0430\u0433\u0440\u0443\u0437\u043e\u0447\u043d\u044b\u0435 \u0442\u0435\u0441\u0442\u044b, \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u043d\u044b\u0435 \u0432 Jmeter, \u0432\u0435\u0434\u0443\u0442 \u0441\u0435\u0431\u044f \u043d\u0435\u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0443\u0435\u043c\u043e. \u0415\u0441\u043b\u0438 \u0441\u0442\u0430\u043b\u043a\u0438\u0432\u0430\u043b\u0438\u0441\u044c, \u043f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u043d\u0430\u043f\u0438\u0448\u0438\u0442\u0435 \u0432 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u0445 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u044d\u0442\u043e\u0439 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b. \u0412 Ubuntu \u0432\u0441\u0451 \u043d\u0430\u043c\u043d\u043e\u0433\u043e \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u0435\u0435.<\/li>\n<li><b>\u041f\u043e\u0447\u0435\u043c\u0443 \u043d\u0435 k3s \u0438\u043b\u0438 MicroK8s?<\/b> \u0415\u0441\u043b\u0438 \u043a\u043e\u0440\u043e\u0442\u043a\u043e, \u043d\u0438 k3s, \u043d\u0438 MicroK8s \u0438\u0437 \u043a\u043e\u0440\u043e\u0431\u043a\u0438 \u043d\u0435 \u0443\u043c\u0435\u044e\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u043c Docker-\u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0435\u043c.<\/li>\n<li><b>\u041f\u043e\u0447\u0435\u043c\u0443 \u043d\u0435 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438?<\/b> \u042f \u043d\u0430\u043c\u0435\u0440\u0435\u043d\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0433\u0434\u0435 \u044d\u0442\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e. <\/li>\n<li><b>\u041f\u043e\u0447\u0435\u043c\u0443 Flannel?<\/b> \u042f \u043d\u043e\u0432\u0438\u0447\u043e\u043a \u0432 kubernetes \u0438 Flannel \u2014 \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u043f\u043b\u0430\u0433\u0438\u043d, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0437\u0430\u0432\u0435\u0441\u0442\u0438 \u0431\u0435\u0437 \u043f\u0440\u043e\u0431\u043b\u0435\u043c.<\/li>\n<li><b>\u041f\u043e\u0447\u0435\u043c\u0443 Docker, \u0430 \u043d\u0435 CRI-O?<\/b> \u041c\u043d\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0435\u043d CRI-O \u0438 \u044f \u043f\u043b\u0430\u043d\u0438\u0440\u0443\u044e \u0438\u0437\u0443\u0447\u0438\u0442\u044c \u0435\u0433\u043e \u0432 \u0431\u0443\u0434\u0443\u0449\u0435\u043c.<\/li>\n<li><b>\u041f\u043e\u0447\u0435\u043c\u0443 MirrorMaker 2.0 \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442 \u0432 Kafka Connect?<\/b> Kafka Connect \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 MirrorMaker 2.0 &quot;\u043d\u0430 \u043b\u0435\u0442\u0443&quot; \u0447\u0435\u0440\u0435\u0437 REST API.<\/li>\n<\/ul>\n<p>  <\/p>\n<h2 id=\"oglavlenie\">\u041e\u0433\u043b\u0430\u0432\u043b\u0435\u043d\u0438\u0435<\/h2>\n<p>  <\/p>\n<p><a href=\"#create-vm\">1. \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u044b<\/a><\/p>\n<p>  <\/p>\n<p><a href=\"#install-ubuntu\">2. \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 Ubuntu Server 20.04<\/a><\/p>\n<p>  <\/p>\n<p><a href=\"#setup-ubuntu\">3. \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 Ubuntu<\/a><\/p>\n<p>  <\/p>\n<p><a href=\"#install-docker\">4. \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 Docker<\/a><\/p>\n<p>  <\/p>\n<p><a href=\"#setup-iptables\">5. \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 iptables<\/a><\/p>\n<p>  <\/p>\n<p><a href=\"#install-kubeadm-kubelet-kubectl\">6. \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 kubeadm, kubelet \u0438 kubectl<\/a><\/p>\n<p>  <\/p>\n<p><a href=\"#kubeadm-init\">7. \u0420\u0430\u0437\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0435\u043c \u043a\u043b\u0430\u0441\u0442\u0435\u0440 Kubernetes<\/a><\/p>\n<p>  <\/p>\n<p><a href=\"#deploing-flannel\">8. \u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c Flannel<\/a><\/p>\n<p>  <\/p>\n<p><a href=\"#control-plane-node-isolation\">9. \u0420\u0430\u0437\u0440\u0435\u0448\u0430\u0435\u043c \u0437\u0430\u043f\u0443\u0441\u043a pod-\u043e\u0432 \u043d\u0430 \u043d\u043e\u0434\u0435 control-plane<\/a><\/p>\n<p>  <\/p>\n<p><a href=\"#kubectl-alias\">10. \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0430\u043b\u0438\u0430\u0441 \u0434\u043b\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u044b kubectl<\/a><\/p>\n<p>  <\/p>\n<p><a href=\"#deploing-monitoring\">11. \u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c Prometheus, Grafana, Alert Manager \u0438 Node Exporter<\/a><\/p>\n<p>  <\/p>\n<p><a href=\"#deploy-cluster\">12. \u0420\u0430\u0437\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0435\u043c \u043a\u043b\u0430\u0441\u0442\u0435\u0440 Apache Kafka<\/a><\/p>\n<p>  <\/p>\n<p><a href=\"#deploy-zookeeper\">12.1. \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c Apache Zookeeper<\/a><\/p>\n<p>  <\/p>\n<p><a href=\"#deploy-kafka\">12.2. \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c Apache Kafka<\/a><\/p>\n<p>  <\/p>\n<p><a href=\"#check\">13. \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0443 \u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439<\/a><\/p>\n<p>  <\/p>\n<p><a href=\"#run-producer\">13.1. \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439<\/a><\/p>\n<p>  <\/p>\n<p><a href=\"#run-consumer\">13.2. \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u0435\u043b\u044f \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439<\/a><\/p>\n<p>  <\/p>\n<p><a href=\"#mirrormaker\">14. \u041d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u044e \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e MirrorMaker 2.0<\/a><\/p>\n<p>  <\/p>\n<p><a href=\"#deploy-mirrormaker\">14.1. \u0417\u0430\u043f\u0443\u0441\u043a MirrorMaker 2.0 \u043a\u0430\u043a \u043a\u043e\u043d\u0435\u043a\u0442\u043e\u0440 \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435 Kafka Connect<\/a><\/p>\n<p>  <\/p>\n<p><a href=\"#check-replication\">14.2. \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u044e \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439<\/a><\/p>\n<p>  <\/p>\n<p><a href=\"#run-jmeter\">15. \u0412\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0435\u0432 Jmeter<\/a><\/p>\n<p>  <\/p>\n<p><a href=\"#delete\">16. \u0423\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445<\/a><\/p>\n<p>  <\/p>\n<hr\/>\n<p>  <\/p>\n<h3 id=\"a-namecreate-vm1-sozdanie-virtualnoy-mashinya\">1. \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u044b<\/h3>\n<p>  <\/p>\n<p>\u0412\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e \u043a\u0430\u043a \u043c\u0438\u043d\u0438\u043c\u0443\u043c 2 \u044f\u0434\u0440\u0430 \u0426\u041f\u0423 \u0438 6-8 \u0413\u0411 \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438. \u0415\u0441\u043b\u0438 \u043d\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0432\u044b\u0434\u0435\u043b\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u044b\u0439 \u043e\u0431\u044a\u0435\u043c \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 \u0434\u043b\u044f \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u044b, \u0442\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0435 \u0432 \u0441\u0442\u043e\u0440\u043e\u043d\u0443 <a href=\"https:\/\/k3s.io\">Rancher K3S<\/a>.<\/p>\n<p>  <\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u0441\u043a\u0440\u0438\u043d\u0448\u043e\u0442\u044b<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/h0\/_r\/nc\/h0_rncpsdsd5yiqdnqycwbdypwi.png\"\/><\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/o7\/e5\/ur\/o7e5ur0p8s3fqsucuvbit5jmw5e.png\"\/><\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/3c\/7d\/sy\/3c7dsyiichobda1yi1nsa-bblqu.png\"\/><\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/bu\/ra\/b-\/burab-zw2qezf1tweifkjheikjm.png\"\/><\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/uo\/50\/_o\/uo50_olxkz2unn01m_fx6jh4dj4.png\"\/><\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/mz\/wo\/ak\/mzwoaktu3y_fruiavxxvwj8iasu.png\"\/><\/p>\n<\/div><\/div>\n<p>  <\/p>\n<h3 id=\"a-nameinstall-ubuntu2-ustanovka-ubuntu-server-2004a\">2. \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 Ubuntu Server 20.04<\/h3>\n<p>  <\/p>\n<p>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0442\u0440\u0438\u0432\u0438\u0430\u043b\u044c\u043d\u044b\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441, \u043d\u043e \u043d\u0430 \u0432\u0441\u044f\u043a\u0438\u0439 \u0441\u043b\u0443\u0447\u0430\u0439 \u043f\u0440\u0438\u0432\u0435\u0434\u0443 \u0441\u043a\u0440\u0438\u043d\u0448\u043e\u0442\u044b. \u041d\u0430 \u0447\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u044c \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435:<\/p>\n<p>  <\/p>\n<ul>\n<li>IP \u0430\u0434\u0440\u0435\u0441, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0438\u0441\u0432\u043e\u0435\u043d \u043d\u043e\u0434\u0435 (\u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e 10.0.2.15); <\/li>\n<li>Kubernetes \u0442\u0440\u0435\u0431\u0443\u0435\u0442, \u0447\u0442\u043e\u0431\u044b swap \u0431\u044b\u043b \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u0438\u0441\u043a\u043e\u0432\u044b\u0435 \u0440\u0430\u0437\u0434\u0435\u043b\u044b \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0432\u0440\u0443\u0447\u043d\u0443\u044e;<\/li>\n<li>\u0412 \u0441\u0430\u043c\u043e\u043c \u043a\u043e\u043d\u0446\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u043e\u043f\u0446\u0438\u044e &quot;Install OpenSSH server&quot;.<\/li>\n<\/ul>\n<p>  <\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u0441\u043a\u0440\u0438\u043d\u0448\u043e\u0442\u044b<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/7o\/kp\/qn\/7okpqnj6butlxr4jxehohncjr1i.png\"\/><\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/qs\/x3\/sj\/qsx3sjq-90mmjkrx_7luk3kqqoc.png\"\/><\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/wh\/su\/n2\/whsun2pewgoytffomswzghmauto.png\"\/><\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/ad\/8b\/fy\/ad8bfyhjvlog4-m8jist6haedjk.png\"\/><\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/0g\/il\/bs\/0gilbsvclfb37ypzye9rzg49aty.png\"\/><\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/68\/qg\/fk\/68qgfkozsdqd23vdyfcmohgmuvo.png\"\/><\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/w2\/mj\/y_\/w2mjy_p0jrc9hcexnnecxkcgbhm.png\"\/><\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/vx\/ko\/0j\/vxko0jtnao3rybfnti_ygmq9gai.png\"\/><\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/8q\/6z\/av\/8q6zavoa9ejmoo_qog5m3gjzgjk.png\"\/><\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/zs\/vx\/42\/zsvx42uj2wbshn6so6jyny_4tos.png\"\/><\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/tz\/oi\/f5\/tzoif5th6uajjz817iwjh1if7-4.png\"\/><\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/jh\/a9\/kb\/jha9kb8yhueblfssqqkshuntz-w.png\"\/><\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/3b\/u6\/ht\/3bu6htqfxi7zxz2qc8tfx5eiczq.png\"\/><\/p>\n<\/div><\/div>\n<p>  <\/p>\n<h3 id=\"a-namesetup-ubuntu3-nastroyka-ubuntua\">3. \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 Ubuntu<\/h3>\n<p>  <\/p>\n<h4 id=\"a-namedisable-firewall31-otklyuchit-firewalla\">3.1. \u041e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c Firewall<\/h4>\n<p>  <\/p>\n<pre><code class=\"bash\">sudo ufw disable<\/code><\/pre>\n<p>  <\/p>\n<h4 id=\"a-namedisable-swap32-otklyuchit-swapa\">3.2. \u041e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c Swap<\/h4>\n<p>  <\/p>\n<pre><code class=\"bash\">sudo swapoff -a  sudo sed -i 's\/^\\\/swap\/#\\\/swap\/' \/etc\/fstab<\/code><\/pre>\n<p>  <\/p>\n<h4 id=\"a-nameinstall-jdk33-ustanovit-openjdka\">3.3. \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c OpenJDK<\/h4>\n<p>  <\/p>\n<p>\u0412 \u043f\u043e\u0441\u0442\u0430\u0432\u043a\u0443 OpenJDK \u0432\u0445\u043e\u0434\u0438\u0442 \u0443\u0442\u0438\u043b\u0438\u0442\u0430 keytool, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f \u0434\u043b\u044f \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0432:<\/p>\n<p>  <\/p>\n<pre><code class=\"bash\">sudo apt install openjdk-8-jdk-headless<\/code><\/pre>\n<p>  <\/p>\n<h4 id=\"a-nameauth-by-key34-avtorizaciya-po-klyuchu-opcionalnoa\">3.4. \u0410\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u044f \u043f\u043e \u043a\u043b\u044e\u0447\u0443 (\u043e\u043f\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e)<\/h4>\n<p>  <\/p>\n<p>\u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0430\u044f \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f \u043e\u0442 DigitalOcean:<br \/>  <a href=\"https:\/\/www.digitalocean.com\/community\/tutorials\/how-to-set-up-ssh-keys-on-ubuntu-20-04-ru\">https:\/\/www.digitalocean.com\/community\/tutorials\/how-to-set-up-ssh-keys-on-ubuntu-20-04-ru<\/a><\/p>\n<p>  <\/p>\n<h3 id=\"a-nameinstall-docker4-ustanovka-dockera-supa-hrefhttpskubernetesiodocssetupproduction-environmentcontainer-runtimesistochnikasup\">4. \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 Docker <sup><a href=\"https:\/\/kubernetes.io\/docs\/setup\/production-environment\/container-runtimes\/\">[\u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a]<\/a><\/sup><\/h3>\n<p>  <\/p>\n<pre><code class=\"bash\"># Switch to the root user  sudo su  # (Install Docker CE) ## Set up the repository: ### Install packages to allow apt to use a repository over HTTPS apt-get update &amp;&amp; apt-get install -y \\   apt-transport-https ca-certificates curl software-properties-common gnupg2  # Add Docker\u2019s official GPG key: curl -fsSL https:\/\/download.docker.com\/linux\/ubuntu\/gpg | apt-key add -  # Add the Docker apt repository: add-apt-repository \\   &quot;deb [arch=amd64] https:\/\/download.docker.com\/linux\/ubuntu \\   $(lsb_release -cs) \\   stable&quot;  # Install Docker CE apt-get update &amp;&amp; apt-get install -y \\   containerd.io=1.2.13-2 \\   docker-ce=5:19.03.11~3-0~ubuntu-$(lsb_release -cs) \\   docker-ce-cli=5:19.03.11~3-0~ubuntu-$(lsb_release -cs)  # Set up the Docker daemon cat &gt; \/etc\/docker\/daemon.json &lt;&lt;EOF {   &quot;exec-opts&quot;: [&quot;native.cgroupdriver=systemd&quot;],   &quot;log-driver&quot;: &quot;json-file&quot;,   &quot;log-opts&quot;: {     &quot;max-size&quot;: &quot;100m&quot;   },   &quot;storage-driver&quot;: &quot;overlay2&quot; } EOF  mkdir -p \/etc\/systemd\/system\/docker.service.d  # Restart Docker systemctl daemon-reload systemctl restart docker  # If you want the docker service to start on boot, run the following command: sudo systemctl enable docker<\/code><\/pre>\n<p>  <\/p>\n<h3 id=\"a-namesetup-iptables5-nastroyka-iptablesa-supa-hrefhttpskubernetesiodocssetupproduction-environmenttoolskubeadminstall-kubeadmletting-iptables-see-bridged-trafficistochnikasup\">5. \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 iptables <sup><a href=\"https:\/\/kubernetes.io\/docs\/setup\/production-environment\/tools\/kubeadm\/install-kubeadm\/#letting-iptables-see-bridged-traffic\">[\u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a]<\/a><\/sup><\/h3>\n<p>  <\/p>\n<pre><code class=\"bash\">cat &lt;&lt;EOF | sudo tee \/etc\/sysctl.d\/k8s.conf net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 EOF  sudo sysctl --system<\/code><\/pre>\n<p>  <\/p>\n<h3 id=\"a-nameinstall-kubeadm-kubelet-kubectl6-ustanovka-kubeadm-kubelet-i-kubectla-supa-hrefhttpskubernetesiodocssetupproduction-environmenttoolskubeadminstall-kubeadminstalling-kubeadm-kubelet-and-kubectlistochnikasup\">6. \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 kubeadm, kubelet \u0438 kubectl <sup><a href=\"https:\/\/kubernetes.io\/docs\/setup\/production-environment\/tools\/kubeadm\/install-kubeadm\/#installing-kubeadm-kubelet-and-kubectl\">[\u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a]<\/a><\/sup><\/h3>\n<p>  <\/p>\n<pre><code class=\"bash\">sudo apt-get update &amp;&amp; sudo apt-get install -y apt-transport-https curl  curl -s https:\/\/packages.cloud.google.com\/apt\/doc\/apt-key.gpg | sudo apt-key add -  cat &lt;&lt;EOF | sudo tee \/etc\/apt\/sources.list.d\/kubernetes.list deb https:\/\/apt.kubernetes.io\/ kubernetes-xenial main EOF  sudo apt-get update  sudo apt-get install -y kubelet kubeadm kubectl  sudo apt-mark hold kubelet kubeadm kubectl<\/code><\/pre>\n<p>  <\/p>\n<h3 id=\"a-namekubeadm-init7-razvorachivaem-klaster-kubernetesa\">7. \u0420\u0430\u0437\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0435\u043c \u043a\u043b\u0430\u0441\u0442\u0435\u0440 Kubernetes<\/h3>\n<p>  <\/p>\n<p>\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u043d\u043e\u0434\u044b control-plane: <sup><a href=\"https:\/\/github.com\/coreos\/flannel\/blob\/master\/Documentation\/kubernetes.md#kubeadm\">[\u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a]<\/a><\/sup><\/p>\n<p>  <\/p>\n<pre><code class=\"bash\"># Pulling images required for setting up a Kubernetes cluster # This might take a minute or two, depending on the speed of your internet connection sudo kubeadm config images pull  # Initialize a Kubernetes control-plane node sudo kubeadm init --pod-network-cidr=10.244.0.0\/16<\/code><\/pre>\n<p>  <\/p>\n<p>\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043f\u043e\u0434 \u043e\u0431\u044b\u0447\u043d\u044b\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c (\u043d\u0435 root): <sup><a href=\"https:\/\/kubernetes.io\/docs\/setup\/production-environment\/tools\/kubeadm\/create-cluster-kubeadm\/#more-information\">[\u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a]<\/a><\/sup><\/p>\n<p>  <\/p>\n<pre><code class=\"bash\">mkdir -p $HOME\/.kube sudo cp -i \/etc\/kubernetes\/admin.conf $HOME\/.kube\/config sudo chown $(id -u):$(id -g) $HOME\/.kube\/config<\/code><\/pre>\n<p>  <\/p>\n<h3 id=\"a-namedeploing-flannel8-ustanavlivaem-flannela-supa-hrefhttpsgithubcomcoreosflanneldeploying-flannel-manuallyistochnikasup\">8. \u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c Flannel <sup><a href=\"https:\/\/github.com\/coreos\/flannel#deploying-flannel-manually\">[\u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a]<\/a><\/sup><\/h3>\n<p>  <\/p>\n<pre><code class=\"bash\">kubectl apply -f https:\/\/raw.githubusercontent.com\/coreos\/flannel\/master\/Documentation\/kube-flannel.yml<\/code><\/pre>\n<p>  <\/p>\n<h3 id=\"a-namecontrol-plane-node-isolation9-razreshaem-zapusk-pod-ov-na-node-control-planea-sup-a-hrefhttpskubernetesiodocssetupproduction-environmenttoolskubeadmcreate-cluster-kubeadmcontrol-plane-node-isolationistochnika-sup\">9. \u0420\u0430\u0437\u0440\u0435\u0448\u0430\u0435\u043c \u0437\u0430\u043f\u0443\u0441\u043a pod-\u043e\u0432 \u043d\u0430 \u043d\u043e\u0434\u0435 control-plane <sup> <a href=\"https:\/\/kubernetes.io\/docs\/setup\/production-environment\/tools\/kubeadm\/create-cluster-kubeadm\/#control-plane-node-isolation\">[\u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a]<\/a> <\/sup><\/h3>\n<p>  <\/p>\n<p>\u0422\u0430\u043a \u043a\u0430\u043a \u043d\u0430\u0448 \u043a\u043b\u0430\u0441\u0442\u0435\u0440 Kubernetes \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442 \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 standalone, \u0442\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0440\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u0437\u0430\u043f\u0443\u0441\u043a pod-\u043e\u0432 \u043d\u0430 \u043d\u043e\u0434\u0435 control-plane:<\/p>\n<p>  <\/p>\n<pre><code class=\"bash\">kubectl taint nodes --all node-role.kubernetes.io\/master-<\/code><\/pre>\n<p>  <\/p>\n<h3 id=\"a-namekubectl-alias10-dobavlyaem-alias-dlya-komandy-kubectla-supa-hrefhttpskubernetesiodocsreferencekubectlcheatsheetbashistochnikasup\">10. \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0430\u043b\u0438\u0430\u0441 \u0434\u043b\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u044b kubectl <sup><a href=\"https:\/\/kubernetes.io\/docs\/reference\/kubectl\/cheatsheet\/#bash\">[\u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a]<\/a><\/sup><\/h3>\n<p>  <\/p>\n<pre><code class=\"bash\">alias k='kubectl'  echo &quot;alias k='kubectl'&quot; &gt;&gt; ~\/.bashrc<\/code><\/pre>\n<p>  <\/p>\n<h3 id=\"a-namedeploing-monitoring11-ustanavlivaem-prometheus-grafana-alert-manager-i-node-exportera\">11. \u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c Prometheus, Grafana, Alert Manager \u0438 Node Exporter<\/h3>\n<p>  <\/p>\n<p>\u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c kube-prometheus: <sup><a href=\"https:\/\/github.com\/coreos\/kube-prometheus#quickstart\">[\u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a]<\/a><\/sup><\/p>\n<p>  <\/p>\n<pre><code class=\"bash\">curl -O -L https:\/\/github.com\/coreos\/kube-prometheus\/archive\/master.zip  sudo apt install -y unzip  unzip master.zip  cd kube-prometheus-master  kubectl create -f manifests\/setup  kubectl create -f manifests\/<\/code><\/pre>\n<p>  <\/p>\n<p>\u0412\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u0443, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 pod-\u043e\u0432. \u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0434\u043e\u0436\u0434\u0430\u0442\u044c\u0441\u044f \u043a\u043e\u0433\u0434\u0430 \u0432\u0441\u0435 pod-\u044b \u043f\u0435\u0440\u0435\u0439\u0434\u0443\u0442 \u0432 \u0441\u0442\u0430\u0442\u0443\u0441 Running:<\/p>\n<p>  <\/p>\n<pre><code class=\"bash\">kubectl get pods -w -n monitoring<\/code><\/pre>\n<p>  <\/p>\n<p>\u0414\u043b\u044f \u0441\u0431\u043e\u0440\u0430 \u043c\u0435\u0442\u0440\u0438\u043a Kafka \u0438 Zookeeper \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c JMX Exporter. \u0427\u0442\u043e\u0431\u044b Prometheus \u043f\u043e\u043b\u0443\u0447\u0438\u043b \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u043c\u044b\u043c \u043c\u0435\u0442\u0440\u0438\u043a\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c ServiceMonitor:<\/p>\n<p>  <\/p>\n<pre><code class=\"bash\">k apply -f servicemonitor\/jmx-exporter-servicemonitor.yaml<\/code><\/pre>\n<p>  <\/p>\n<p>\u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0441\u0435\u0440\u0432\u0438\u0441, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0432\u0435\u0431-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0443 Grafana \u0438\u0437 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u044b:<\/p>\n<p>  <\/p>\n<pre><code class=\"bash\">kubectl apply -f https:\/\/raw.githubusercontent.com\/kildibaev\/k8s-kafka\/master\/service\/grafana-svc.yaml<\/code><\/pre>\n<p>  <\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0441\u0435\u0440\u0432\u0438\u0441\u0430 Grafana \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u0438\u0437 \u0433\u043e\u0441\u0442\u0435\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 <a href=\"http:\/\/localhost:32000\">http:\/\/localhost:32000<\/a><\/p>\n<p>  <\/p>\n<p>\u0412\u044b\u043f\u043e\u043b\u043d\u0438\u043c \u043f\u0440\u043e\u0431\u0440\u043e\u0441 \u043f\u043e\u0440\u0442\u0430, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a Grafana \u043d\u0430 \u0445\u043e\u0441\u0442 \u043c\u0430\u0448\u0438\u043d\u0435:<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/nt\/v4\/mj\/ntv4mjo20cvtn1uidrbmzt1hcl4.png\"\/><\/p>\n<p>  <\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0432\u0435\u0431-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 Grafana \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u043d\u0430 \u0445\u043e\u0441\u0442 \u043c\u0430\u0448\u0438\u043d\u0435 \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 <a href=\"http:\/\/127.0.0.1:3000\">http:\/\/127.0.0.1:3000<\/a><\/p>\n<p>  <\/p>\n<p>\u0414\u043b\u044f \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430 \u043c\u0435\u0442\u0440\u0438\u043a \u0432 Grafana \u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0433\u043e\u0442\u043e\u0432\u044b\u043c \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u043e\u043c. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u0435\u0440\u0435\u0439\u0434\u0438\u0442\u0435 \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 <a href=\"http:\/\/127.0.0.1:3000\/dashboard\/import\">http:\/\/127.0.0.1:3000\/dashboard\/import<\/a> \u0438 \u0432 \u043f\u043e\u043b\u0435 &quot;Import via panel json&quot; \u0441\u043a\u043e\u043f\u0438\u0440\u0443\u0439\u0442\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0444\u0430\u0439\u043b\u0430 <a href=\"https:\/\/raw.githubusercontent.com\/kildibaev\/k8s-kafka\/master\/config\/grafana-dashboard.json\">grafana-dashboard.json<\/a><\/p>\n<p>  <\/p>\n<h3 id=\"a-namedeploy-cluster12-razvorachivaem-klaster-apache-kafkaa\">12. \u0420\u0430\u0437\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0435\u043c \u043a\u043b\u0430\u0441\u0442\u0435\u0440 Apache Kafka<\/h3>\n<p>  <\/p>\n<pre><code class=\"bash\"># \u0421\u043a\u0430\u0447\u0438\u0432\u0430\u0435\u043c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f git clone https:\/\/github.com\/kildibaev\/k8s-kafka.git $HOME\/k8s-kafka cd $HOME\/k8s-kafka<\/code><\/pre>\n<p>  <\/p>\n<h4 id=\"a-namedeploy-zookeeper121-zapuskaem-apache-zookeepera\">12.1. \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c Apache Zookeeper<\/h4>\n<p>  <\/p>\n<p>\u0427\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0443\u0435\u043c\u044b\u0435 \u0438\u043c\u0435\u043d\u0430 \u0445\u043e\u0441\u0442\u043e\u0432 \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u0441\u044f Statefulset. \u0412 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043a\u043b\u0430\u0441\u0442\u0435\u0440 Apache Zookeeper \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0441\u0442\u043e\u044f\u0442\u044c \u0438\u0437 \u0442\u0440\u0435\u0445 \u0438\u043d\u0441\u0442\u0430\u043d\u0441\u043e\u0432: zookeeper-0.zookeeper, zookeeper-1.zookeeper \u0438 zookeeper-2.zookeeper<\/p>\n<p>  <\/p>\n<pre><code class=\"bash\"># \u0421\u043e\u0431\u0438\u0440\u0430\u0435\u043c \u043e\u0431\u0440\u0430\u0437 zookeeper-base sudo docker build -t zookeeper-base:local-v1 -f dockerfile\/zookeeper-base.dockerfile .  # \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0441\u0435\u0440\u0432\u0438\u0441 Zookeeper k apply -f service\/zookeeper-svc.yaml  # \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u043a\u043b\u0430\u0441\u0442\u0435\u0440 Apache Zookeeper k apply -f statefulset\/zookeeper-statefulset.yaml  # \u041f\u0435\u0440\u0435\u0434 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u0448\u0430\u0433\u043e\u0432 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0434\u043e\u0436\u0434\u0430\u0442\u044c\u0441\u044f \u043a\u043e\u0433\u0434\u0430 \u0432\u0441\u0435 \u0442\u0440\u0438 pod-\u0430 \u043f\u0435\u0440\u0435\u0439\u0434\u0443\u0442 \u0432 \u0441\u0442\u0430\u0442\u0443\u0441 Running. \u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 pod-\u043e\u0432 \u043c\u043e\u0436\u043d\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439: k get pods -w<\/code><\/pre>\n<p>  <\/p>\n<h4 id=\"a-namedeploy-kafka122-zapuskaem-apache-kafkaa\">12.2. \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c Apache Kafka<\/h4>\n<p>  <\/p>\n<p>\u041a\u043b\u0430\u0441\u0442\u0435\u0440 Apache Kafka \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0441\u0442\u043e\u044f\u0442\u044c \u0438\u0437 \u0434\u0432\u0443\u0445 \u0431\u0440\u043e\u043a\u0435\u0440\u043e\u0432: kafka-0.kafka \u0438 kafka-1.kafka<\/p>\n<p>  <\/p>\n<pre><code class=\"bash\"># \u0421\u043e\u0431\u0438\u0440\u0430\u0435\u043c \u043e\u0431\u0440\u0430\u0437 kafka-base sudo docker build -t kafka-base:local-v1 -f dockerfile\/kafka-base.dockerfile .  # \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0441\u0435\u0440\u0432\u0438\u0441 Kafka k apply -f service\/kafka-svc.yaml  # \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u043a\u043b\u0430\u0441\u0442\u0435\u0440 Apache Kafka k apply -f statefulset\/kafka-statefulset.yaml  # \u041f\u0435\u0440\u0435\u0434 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u0448\u0430\u0433\u043e\u0432 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0434\u043e\u0436\u0434\u0430\u0442\u044c\u0441\u044f \u043a\u043e\u0433\u0434\u0430 \u043e\u0431\u0430 pod-\u0430 \u043f\u0435\u0440\u0435\u0439\u0434\u0443\u0442 \u0432 \u0441\u0442\u0430\u0442\u0443\u0441 Running. \u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 pod-\u043e\u0432 \u043c\u043e\u0436\u043d\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439: k get pods -w<\/code><\/pre>\n<p>  <\/p>\n<h3 id=\"a-namecheck13-proveryaem-otpravku-i-poluchenie-soobscheniya\">13. \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0443 \u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439<\/h3>\n<p>  <\/p>\n<h4 id=\"a-namerun-producer131-zapuskaem-generator-soobscheniya\">13.1. \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439<\/h4>\n<p>  <\/p>\n<p>\u0417\u0430\u043f\u0443\u0441\u0442\u0438\u043c \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c 10 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0443. \u0420\u0430\u0437\u043c\u0435\u0440 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 100 \u0431\u0430\u0439\u0442. \u0412 \u043e\u0431\u0449\u0435\u0439 \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043e 30000 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439.<\/p>\n<p>  <\/p>\n<pre><code class=\"bash\"># \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u043d\u043e\u0432\u044b\u0439 pod - producer k run --rm -i --tty producer --image=kafka-base:local-v1 -- bash  # \u0421\u043e\u0437\u0434\u0430\u0435\u043c \u0442\u043e\u043f\u0438\u043a topicname \u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c \u0432 \u043d\u0435\u0433\u043e \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f bin\/kafka-producer-perf-test.sh \\    --topic topicname \\    --num-records 30000 \\    --record-size 100 \\    --throughput 10 \\    --producer.config \/config\/client.properties \\    --producer-props acks=1 \\    bootstrap.servers=kafka-0.kafka:9092,kafka-1.kafka:9092 \\    buffer.memory=33554432 \\    batch.size=8196<\/code><\/pre>\n<p>  <\/p>\n<h4 id=\"a-namerun-consumer132-zapuskaem-poluchatelya-soobscheniya\">13.2. \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u0435\u043b\u044f \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439<\/h4>\n<p>  <\/p>\n<pre><code class=\"bash\"># \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u043d\u043e\u0432\u044b\u0439 pod - consumer k run --rm -i --tty consumer --image=kafka-base:local-v1 -- bash   # \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0438\u0437 \u0442\u043e\u043f\u0438\u043a\u0430 topicname bin\/kafka-consumer-perf-test.sh \\ --broker-list kafka-0.kafka:9092,kafka-1.kafka:9092 \\ --consumer.config \/config\/client.properties \\ --messages 30000 \\ --topic topicname \\ --threads 2<\/code><\/pre>\n<p>  <\/p>\n<h3 id=\"a-namemirrormaker14-nastraivaem-replikaciyu-soobscheniy-s-pomoschyu-mirrormaker-20a\">14. \u041d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u044e \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e MirrorMaker 2.0<\/h3>\n<p>  <\/p>\n<h4 id=\"a-namedeploy-mirrormaker141-zapusk-mirrormaker-20-kak-konektor-v-klastere-kafka-connecta\">14.1. \u0417\u0430\u043f\u0443\u0441\u043a MirrorMaker 2.0 \u043a\u0430\u043a \u043a\u043e\u043d\u0435\u043a\u0442\u043e\u0440 \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435 Kafka Connect<\/h4>\n<p>  <\/p>\n<p>\u041a\u043b\u0430\u0441\u0442\u0435\u0440 Apache Kafka, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u044b \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043b\u0438 \u0440\u0430\u043d\u0435\u0435, \u0443\u0441\u043b\u043e\u0432\u043d\u043e \u043d\u0430\u0437\u043e\u0432\u0435\u043c production. \u041f\u043e\u0434\u043d\u0438\u043c\u0435\u043c \u0435\u0449\u0435 \u043e\u0434\u0438\u043d pod, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u043e \u0442\u0440\u0438 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430: Apache Zookeeper, Apache Kafka \u0438 Kafka Connect. \u041d\u043e\u0432\u044b\u0439 \u0438\u043d\u0441\u0442\u0430\u043d\u0441 Apache Kafka \u043d\u0430\u0437\u043e\u0432\u0435\u043c backup \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u043c \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u044e \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u0438\u0437 production \u0432 backup.<\/p>\n<p>  <\/p>\n<pre><code class=\"bash\">k apply -f service\/mirrormaker-svc.yaml  # \u041f\u043e\u0434\u043d\u0438\u043c\u0435\u043c pod, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u043e \u0442\u0440\u0438 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430: Apache Zookeeper, Apache Kafka \u0438 Kafka Connect k apply -f statefulset\/mirrormaker-statefulset.yaml  # \u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0434\u043e\u0436\u0434\u0430\u0442\u044c\u0441\u044f \u043a\u043e\u0433\u0434\u0430 pod \u0441 \u0438\u043c\u0435\u043d\u0435\u043c mirrormaker-0 \u043f\u0435\u0440\u0435\u0439\u0434\u0435\u0442 \u0432 \u0441\u0442\u0430\u0442\u0443\u0441 Running k get pods -w  # \u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u043c\u0441\u044f \u043a \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0443 connect \u0432 pod-\u0435 mirrormaker-0 \u0438 \u043e\u0442\u043a\u0440\u043e\u0435\u043c \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443 k exec -ti mirrormaker-0 -c connect -- bash  # \u0412 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435 Kafka Connect \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043a\u043e\u043d\u043d\u0435\u043a\u0442\u043e\u0440 MirrorMaker 2.0 curl -X POST -H &quot;Content-Type: application\/json&quot; mirrormaker-0.mirrormaker:8083\/connectors -d \\ '{     &quot;name&quot;: &quot;MirrorSourceConnector&quot;,     &quot;config&quot;: {       &quot;connector.class&quot;: &quot;org.apache.kafka.connect.mirror.MirrorSourceConnector&quot;,       &quot;source.cluster.alias&quot;: &quot;production&quot;,       &quot;target.cluster.alias&quot;: &quot;backup&quot;,       &quot;source.cluster.bootstrap.servers&quot;: &quot;kafka-0.kafka:9092,kafka-1.kafka:9092&quot;,       &quot;source.cluster.group.id&quot;: &quot;mirror_maker_consumer&quot;,       &quot;source.cluster.enable.auto.commit&quot;: &quot;true&quot;,       &quot;source.cluster.auto.commit.interval.ms&quot;: &quot;1000&quot;,       &quot;source.cluster.session.timeout.ms&quot;: &quot;30000&quot;,       &quot;source.cluster.security.protocol&quot;: &quot;SSL&quot;,       &quot;source.cluster.ssl.truststore.location&quot;: &quot;\/certs\/kafkaCA-trusted.jks&quot;,       &quot;source.cluster.ssl.truststore.password&quot;: &quot;kafkapilot&quot;,       &quot;source.cluster.ssl.truststore.type&quot;: &quot;JKS&quot;,       &quot;source.cluster.ssl.keystore.location&quot;: &quot;\/certs\/kafka-consumer.jks&quot;,       &quot;source.cluster.ssl.keystore.password&quot;: &quot;kafkapilot&quot;,       &quot;source.cluster.ssl.keystore.type&quot;: &quot;JKS&quot;,       &quot;target.cluster.bootstrap.servers&quot;: &quot;localhost:9092&quot;,       &quot;target.cluster.compression.type&quot;: &quot;none&quot;,       &quot;topics&quot;: &quot;.*&quot;,       &quot;rotate.interval.ms&quot;: &quot;1000&quot;,       &quot;key.converter.class&quot;: &quot;org.apache.kafka.connect.converters.ByteArrayConverter&quot;,       &quot;value.converter.class&quot;: &quot;org.apache.kafka.connect.converters.ByteArrayConverter&quot;     } }'<\/code><\/pre>\n<p>  <\/p>\n<h4 id=\"a-namecheck-replication142-proveryaem-replikaciyu-soobscheniya\">14.2. \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u044e \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439<\/h4>\n<p>  <\/p>\n<p>\u0415\u0441\u043b\u0438 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u044f \u043f\u0440\u043e\u0448\u043b\u0430 \u0443\u0441\u043f\u0435\u0448\u043d\u043e, \u0442\u043e \u0432 backup \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u043d \u0442\u043e\u043f\u0438\u043a production.topicname. \u041f\u0440\u0435\u0444\u0438\u043a\u0441 &quot;.production&quot; MirrorMaker 2.0 \u0434\u043e\u0431\u0430\u0432\u0438\u0442, \u0447\u0442\u043e\u0431\u044b \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u0437\u0430\u0446\u0438\u043a\u043b\u0438\u0432\u0430\u043d\u0438\u044f, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043a\u043e\u0433\u0434\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u0430 \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 active-active.<\/p>\n<p>  <\/p>\n<pre><code class=\"bash\"># \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u043d\u043e\u0432\u044b\u0439 pod - consumer k exec -ti mirrormaker-0 -c kafka -- bash  # \u041f\u043e\u043b\u0443\u0447\u0438\u043c \u0441\u043f\u0438\u0441\u043e\u043a \u0442\u043e\u043f\u0438\u043a\u043e\u0432  bin\/kafka-topics.sh --list --bootstrap-server mirrormaker-0.mirrormaker:9092  # \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0438\u0437 \u0442\u043e\u043f\u0438\u043a\u0430 production.topicname bin\/kafka-console-consumer.sh \\ --bootstrap-server mirrormaker-0.mirrormaker:9092 \\ --topic production.topicname \\ --from-beginning<\/code><\/pre>\n<p>  <\/p>\n<p>\u0415\u0441\u043b\u0438 \u0442\u043e\u043f\u0438\u043a production.topicname \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442, \u043d\u043e \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0438\u0437 \u043d\u0435\u0433\u043e \u043d\u0435 \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u044e\u0442\u0441\u044f, \u043f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u043b\u043e\u0433\u0438 Kafka Connect:<\/p>\n<p>  <\/p>\n<pre><code class=\"bash\">k logs mirrormaker-0 connect<\/code><\/pre>\n<p>  <\/p>\n<p>\u0415\u0441\u043b\u0438 \u0432 \u043b\u043e\u0433\u0430\u0445 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0437\u0430\u043f\u0438\u0441\u0438<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">ERROR WorkerSourceTask{id=MirrorSourceConnector-0} Failed to flush, timed out while waiting for producer to flush outstanding 1 messages (org.apache.kafka.connect.runtime.WorkerSourceTask:438)  ERROR WorkerSourceTask{id=MirrorSourceConnector-0} Failed to commit offsets (org.apache.kafka.connect.runtime.SourceTaskOffsetCommitter:114)<\/code><\/pre>\n<p>  <\/p>\n<p>\u0434\u043b\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0443\u043c\u0435\u043d\u044c\u0448\u0438\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 producer.buffer.memory:<\/p>\n<p>  <\/p>\n<pre><code class=\"bash\">k exec -ti mirrormaker-0 -c connect -- bash  curl -X PUT -H &quot;Content-Type: application\/json&quot; mirrormaker-0.mirrormaker:8083\/connectors\/MirrorSourceConnector\/config -d \\ '{   &quot;connector.class&quot;: &quot;org.apache.kafka.connect.mirror.MirrorSourceConnector&quot;,   &quot;source.cluster.alias&quot;: &quot;production&quot;,   &quot;target.cluster.alias&quot;: &quot;backup&quot;,   &quot;source.cluster.bootstrap.servers&quot;: &quot;kafka-0.kafka:9092,kafka-1.kafka:9092&quot;,   &quot;source.cluster.group.id&quot;: &quot;mirror_maker_consumer&quot;,   &quot;source.cluster.enable.auto.commit&quot;: &quot;true&quot;,   &quot;source.cluster.auto.commit.interval.ms&quot;: &quot;1000&quot;,   &quot;source.cluster.session.timeout.ms&quot;: &quot;30000&quot;,   &quot;source.cluster.security.protocol&quot;: &quot;SSL&quot;,   &quot;source.cluster.ssl.truststore.location&quot;: &quot;\/certs\/kafkaCA-trusted.jks&quot;,   &quot;source.cluster.ssl.truststore.password&quot;: &quot;kafkapilot&quot;,   &quot;source.cluster.ssl.truststore.type&quot;: &quot;JKS&quot;,   &quot;source.cluster.ssl.keystore.location&quot;: &quot;\/certs\/kafka-consumer.jks&quot;,   &quot;source.cluster.ssl.keystore.password&quot;: &quot;kafkapilot&quot;,   &quot;source.cluster.ssl.keystore.type&quot;: &quot;JKS&quot;,   &quot;target.cluster.bootstrap.servers&quot;: &quot;localhost:9092&quot;,   &quot;target.cluster.compression.type&quot;: &quot;none&quot;,   &quot;topics&quot;: &quot;.*&quot;,   &quot;rotate.interval.ms&quot;: &quot;1000&quot;,   &quot;producer.buffer.memory:&quot; &quot;1000&quot;,   &quot;key.converter.class&quot;: &quot;org.apache.kafka.connect.converters.ByteArrayConverter&quot;,   &quot;value.converter.class&quot;: &quot;org.apache.kafka.connect.converters.ByteArrayConverter&quot; }'<\/code><\/pre>\n<p>  <\/p>\n<h3 id=\"a-namerun-jmeter15-vypolnenie-scenariev-jmetera\">15. \u0412\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0435\u0432 Jmeter<\/h3>\n<p>  <\/p>\n<pre><code class=\"bash\"># \u0421\u043e\u0431\u0438\u0440\u0430\u0435\u043c \u043e\u0431\u0440\u0430\u0437 jmeter-base sudo docker build -t jmeter-base:local-v1 -f dockerfile\/jmeter-base.dockerfile .  # \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0441\u0435\u0440\u0432\u0438\u0441 Jmeter k apply -f service\/jmeter-svc.yaml  # \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0447\u0435\u0442\u044b\u0440\u0435 pod-\u0430 Jmeter, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0443 k apply -f statefulset\/jmeter-statefulset.yaml<\/code><\/pre>\n<p>  <\/p>\n<p>\u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c pod jmeter-producer \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u043c \u0432 \u043d\u0435\u043c \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0439 producer.jmx<\/p>\n<p>  <\/p>\n<pre><code class=\"bash\">k run --rm -i --tty jmeter-producer --image=jmeter-base:local-v1 -- bash .\/jmeter -n -t \/tests\/producer.jmx -r -Jremote_hosts=jmeter-0.jmeter:1099,jmeter-1.jmeter:1099<\/code><\/pre>\n<p>  <\/p>\n<p>\u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c pod jmeter-consumer \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u043c \u0432 \u043d\u0435\u043c \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0439 consumer.jmx<\/p>\n<p>  <\/p>\n<pre><code class=\"bash\">k run --rm -i --tty jmeter-consumer --image=jmeter-base:local-v1 -- bash .\/jmeter -n -t \/tests\/consumer.jmx -r -Jremote_hosts=jmeter-2.jmeter:1099,jmeter-3.jmeter:1099<\/code><\/pre>\n<p>  <\/p>\n<h3 id=\"a-namedelete16-udalenie-dannyha\">16. \u0423\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445<\/h3>\n<p>  <\/p>\n<h4 id=\"udalyaem-statefulset\">\u0423\u0434\u0430\u043b\u044f\u0435\u043c statefulset<\/h4>\n<p>  <\/p>\n<pre><code class=\"bash\">k delete statefulset jmeter zookeeper kafka mirrormaker<\/code><\/pre>\n<p>  <\/p>\n<h4 id=\"udalyaem-konteynery\">\u0423\u0434\u0430\u043b\u044f\u0435\u043c \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b<\/h4>\n<p>  <\/p>\n<pre><code class=\"bash\">sudo docker rmi -f zookeeper-base:local-v1 kafka-base:local-v1 jmeter-base:local-v1<\/code><\/pre>\n<p>  <\/p>\n<h4 id=\"udalyaem-servisy\">\u0423\u0434\u0430\u043b\u044f\u0435\u043c \u0441\u0435\u0440\u0432\u0438\u0441\u044b<\/h4>\n<p>  <\/p>\n<pre><code class=\"bash\">k delete svc grafana jmeter kafka mirrormaker zookeeper k delete servicemonitor jmxexporter<\/code><\/pre>\n<p>  <\/p>\n<p><i>\u0412\u0441\u0435\u043c \u0434\u043e\u0431\u0440\u0430! \u041d\u0435 \u0431\u043e\u043b\u0435\u0439\u0442\u0435.<\/i><\/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\/515584\/\"> https:\/\/habr.com\/ru\/post\/515584\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"\n<div class=\"post__text post__text-html post__text_v1\" id=\"post-content-body\" data-io-article-url=\"https:\/\/habr.com\/ru\/post\/515584\/\">\n<p>\u042f \u0438\u043d\u0436\u0435\u043d\u0435\u0440 \u043f\u043e \u043d\u0430\u0433\u0440\u0443\u0437\u043e\u0447\u043d\u043e\u043c\u0443 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044e \u0438 \u043d\u0435 \u0442\u0430\u043a \u0434\u0430\u0432\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u044e \u043d\u0430\u0434 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u043c, \u0433\u0434\u0435 \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 Apache Kafka. \u0418\u0437-\u0437\u0430 \u0440\u0435\u0436\u0438\u043c\u0430 \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u043c\u0443 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044e \u0437\u0430\u0442\u044f\u043d\u0443\u043b\u043e\u0441\u044c \u043d\u0430 \u043d\u0435\u0434\u0435\u043b\u0438. \u0427\u0442\u043e\u0431\u044b \u043d\u0435 \u0442\u0435\u0440\u044f\u0442\u044c \u0432\u0440\u0435\u043c\u044f \u044f \u0440\u0435\u0448\u0438\u043b \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044c \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0441\u0442\u0435\u043d\u0434 \u0432 Kubernetes.<\/p>\n<p>  <\/p>\n<p>\u041a\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u043b \u0441 Apache Kafka \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442, \u0447\u0442\u043e \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u0430\u044f \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u043f\u043e\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u0434\u0430\u043b\u0435\u043a\u043e \u043d\u0435 \u0432\u0441\u0435 \u0442\u043e\u043d\u043a\u043e\u0441\u0442\u0438 \u0438\u043d\u0441\u0442\u0430\u043b\u043b\u044f\u0446\u0438\u0438 \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438. \u042f \u043d\u0430\u0434\u0435\u044e\u0441\u044c, \u0447\u0442\u043e \u0434\u0430\u043d\u043d\u0430\u044f \u043f\u043e\u0448\u0430\u0433\u043e\u0432\u0430\u044f \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u0432\u0430\u043c \u0441\u043e\u043a\u0440\u0430\u0442\u0438\u0442\u044c \u0432\u0440\u0435\u043c\u044f \u0440\u0430\u0437\u0432\u0435\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u044f \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0433\u043e \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f. \u041e\u0431\u0440\u0430\u0449\u0430\u044e \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 stateful \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430\u0445 \u2014 \u0434\u0430\u043b\u0435\u043a\u043e \u043d\u0435 \u043b\u0443\u0447\u0448\u0430\u044f \u0438\u0434\u0435\u044f, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u0430\u043d\u043d\u0430\u044f \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f \u043d\u0435 \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0430 \u0434\u043b\u044f \u0440\u0430\u0437\u0432\u0435\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u044f \u043f\u0440\u043e\u043c\u044b\u0448\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0441\u0442\u0435\u043d\u0434\u0430.<\/p>\n<p>  <\/p>\n<p>\u0418\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u044b \u0432 VirtualBox, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443 \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0443 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443 Docker, Kubernetes \u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0430. \u0412 Kubernetes \u0440\u0430\u0437\u0432\u0435\u0440\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0434\u0432\u0430 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 Apache Kafka: &quot;production&quot; \u0438 &quot;backup&quot;. \u0414\u043b\u044f \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u0438\u0437 production \u0432 backup \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f MirrorMaker 2.0. \u0412\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u043c\u0435\u0436\u0434\u0443 \u0443\u0437\u043b\u0430\u043c\u0438 production \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 \u0437\u0430\u0449\u0438\u0449\u0435\u043d\u043e TLS. \u041a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u043d\u0435 \u043c\u043e\u0433\u0443 \u0432\u044b\u043b\u043e\u0436\u0438\u0442\u044c \u0432 Git \u0441\u043a\u0440\u0438\u043f\u0442 \u0434\u043b\u044f \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0432. \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b \u0438\u0437 \u0430\u0440\u0445\u0438\u0432\u0430 certs\/certs.tar.gz. \u0412 \u0441\u0430\u043c\u043e\u043c \u043a\u043e\u043d\u0446\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0440\u0430\u0437\u0432\u0435\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u0435 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 Jmeter \u0438 \u0437\u0430\u043f\u0443\u0441\u043a \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0433\u043e \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u044f.<\/p>\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-308623","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/308623","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=308623"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/308623\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=308623"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=308623"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=308623"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}