首页 文章 精选 留言 我的

精选列表

搜索[部署工具],共10000篇文章
优秀的个人博客,低调大师

zookeeper安装部署--分布式模式

本地模式,和伪分布模式,只适合测试 1:下载zookeeper(zookeeper-3.4.6.tar.gz) http://mirrors.cnnic.cn/apache/zookeeper/zookeeper-3.4.7/ 规划:5个节点(nimbus,slave1,slave2,slave3,slave4)参与选举为前三个节点,后面两个节点作为observer,不参与投票,只负责监控,读取数据 创建目录(xshell 执行一下命令,5个节点同时创建目录) mkdir -p /home/hadoop/app tar -zxvfzookeeper-3.4.6.tar.gz mvzookeeper-3.4.6zookeeper chown -R hadoop:hadoopzookeeper su hadoop cdzookeeper cd conf/ cp zoo_sample.cfg zoo.cfg vi zoo.cfg tickTime=2000(客户端与服务器之间维持心跳的时间间隔单位毫秒)每个多少时间发送一个心跳 initLimit=10(zookeeper接收客户端,zookeeper服务器集中连到leader服务器,不是用户客户端,次数超过多少,无应答,表示失败) syncLimit=5(leader与follower,发送消息,请求和应答时间长度) dataDir=/tmp/zookeeper(数据节点,日志文件)/home/hadoop/data/zookeeper/zkdata dataLogDir=/home/hadoop/data/zookeeper/zkdatalog clientPort=2181(客户端口) server.1=nimbus:2888:3888 server.2=slave1:2888:3888 server.3=slave2:2888:3888 server.4=slave3:2888:3888:observer server.5=slave4:2888:3888:observer (xshell 执行一下命令,5个节点同时创建目录) mkdir -p /home/hadoop/data/zookeeper/zkdata mkdir -p /home/hadoop/data/zookeeper/zkdatalog cd /home/hadoop/data/zookeeper/zkdata vi myid 1 wq slave1 下 cd zkdata vi myid 2 wq 其他节点类似创建myid 将配置好的zookeeper同步到其他节点上 scp -r zookeeper hadoop@slave1:/home/hadoop/app/ scp -r zookeeper hadoop@slave2:/home/hadoop/app/ scp -r zookeeper hadoop@slave3:/home/hadoop/app/ scp -r zookeeper hadoop@slave4:/home/hadoop/app/ slave3上改配置 vi zoo.cfg peerType=observer slave4上改配置 vi zoo.cfg peerType=observer 快捷命令方式 cd /home/hadoop/app/zookeeper 启动下 bin/zkServer.sh start 查看进程 jps bin/zkServer.sh status follower nimbus,slave1 leader slave2 observer slave3,slave4 测试-把slave2停止 bin/zkServer.sh stop slave1变成leader 把slave1停掉 bin/zkServer.sh stop nimbus下 bin/zkServer.sh status 集群不可用 slave3和slave4都不可用 本文转自 skinglzw 51CTO博客,原文链接:http://blog.51cto.com/skinglzw/1833305,如需转载请自行联系原作者

优秀的个人博客,低调大师

centos6.5下的elk部署

1、介绍 elk是实时日志分析平台,主要是为开发和运维人员提供实时的日志分析,方便人员更好的了解系统状态和代码问题。 2、elk中的e(elasticsearch): (2.1)先安装依赖包,官方文档说明使用java1.8 yum -y install java-1.8.0-openjdk 安装elasticsearch: tar zvxf elasticsearch-1.7.0.tar.gz mv elasticsearch-1.7.0 /usr/local/elasticsearch vim /usr/local/elasticsearch/config cp elasticsearch.yml elasticsearch.yml.bak vim elasticsearch.yml(修改) 1 2 3 4 5 6 7 8 9 10 11 12 cluster.name:elasticsearch node.name:syk node.master: true node.data: true index.number_of_shards:5 index.number_of_replicas:1(分片副本) path.data: /usr/local/elasticsearch/data path.conf: /usr/local/elasticsearch/conf path.work: /usr/local/elasticsearch/work path.plugins: /usr/local/elasticsearch/plugins path.logs: /usr/local/elasticsearch/logs bootstrap.mlockall: true (内存) 启动:/usr/local/elasticsearch/bin/elasticsearch -d netstat -tlnp查看 会有9200与9300的java进程 curlhttp://192.168.137.50:9200 显示: 1 2 3 4 5 6 7 8 9 10 11 12 13 { "status" :200, "name" : "syk" , "cluster_name" : "elasticsearch" , "version" :{ "number" : "1.7.0" , "build_hash" : "929b9739cae115e73c346cb5f9a6f24ba735a743" , "build_timestamp" : "2015-07-16T14:31:07Z" , "build_snapshot" : false , "lucene_version" : "4.10.4" }, "tagline" : "YouKnow,forSearch" } (2.2)使用官方给的启动脚本: https://codeload.github.com/elastic/elasticsearch-servicewrapper/zip/master 用rz命令传到服务器上 unzip elasticsearch-servicewrapper-master.zip mv elasticsearch-servicewrapper-master/service/ /usr/local/elasticsearch/bin/ cd /usr/local/elasticsearch/bin/service ./elasticsearch install(在init.d下自动创建服务脚本) /etc/init.d/elasticsearch restart 1 2 3 4 5 6 7 curl-XGET 'http://192.168.137.50:9200/_count?pretty' -d' >{ > "query" :{ > "match_all" :{} >} >} >' 会返回: 1 2 3 4 5 6 7 8 { "count" :0, "_shards" :{ "total" :0, "successful" :0, "failed" :0 } } (2.3)基于rest api的界面(可以增删改差) 安装插件:/usr/local/elasticsearch/bin/plugin -i elasticsearch/marvel/latest (自动安装) 网页访问:http://192.168.137.50:9200/_plugin/marvel 安装集群管理插件 /usr/local/elasticsearch/bin/plugin -i mobz/elasticsearch-head 或者:https://github.com/mobz/elasticsearch-head/archive/master.zip下载下来,rz传到服务器 unzip elasticsearch-head-master.zip mv elasticsearch-head-master plugins/head 网页访问:http://192.168.137.50:9200/_plugin/head 可以以网页的方式显示你的分片已分片副本。 3、elk中的l(logstash): (3.1)安装logstash: i)、官方提供了yum安装的安装方式: 1、rpm --importhttps://packages.elastic.co/GPG-KEY-elasticsearch 2、vim /etc/yum.repos.d/logstash.repo 添加: 1 2 3 4 5 6 [logstash-2.3] name=Logstashrepository for 2.3.xpackages baseurl=https: //packages .elastic.co /logstash/2 .3 /centos gpgcheck=1 gpgkey=https: //packages .elastic.co /GPG-KEY-elasticsearch enabled=1 3、yum --enablerepo=logstash-2.3 -y install logstash ii)、下载tar包安装: tar zvxf logstash-1.5.3.tar.gz mv logstash-1.5.3 /usr/local/logstash (3.2)测试 1 /usr/local/logstash/bin/logstash -e 'input{stdin{}}output{stdout{codec=>rubydebug}}' 输入hehe 显示: 1 2 3 4 5 6 7 8 Logstashstartupcompleted hehe { "message" => "hehe" , "@version" => "1" , "@timestamp" => "2016-08-07T17:46:10.836Z" , "host" => "web10.syk.com" } 这表示正常。 (3.3)写logstash配置文件 注意: 必须input{}与output{} 写法:符号使用=> vim /etc/logstash.conf 1 2 3 4 5 6 7 8 9 10 11 input{ file { path=> "/var/log/syk.log" } } output{ file { path=> "/tmp/%{+YYYY-MM-dd}.syk.gz" gzip => true } } 启动logstash:/usr/local/logstash/bin/logstash -f /etc/logstash.conf cd /var/log cat maillog >> syk.log(追加到syk.log里) 在/tmp下可以看到以日期命名的syk.gz压缩文件 (3.4)使用redis存储logstash: yum -y install redis(redis放在另外一台服务器上) vim /etc/redis.conf(修改) bind 192.168.137.52 在192.168.137.52服务器上也安装logstash 编写配置文件: vim /etc/logstash.conf 1 2 3 4 5 6 7 8 9 10 11 12 13 14 input{ file { path=> "/var/log/syk.log" } } output{ redis{ data_type=> "list" key=> "system-messages" host=> "192.168.137.52" port=> "6379" db=> "1" } } 启动52服务器的logstash: /usr/local/logstash/bin/logstash -f /etc/logstash.conf cd /var/log cat maillog >> syk.log(追加到syk.log里) 进去redis里查看: 1 2 3 4 redis-cli-h192.168.137.52-p6379 select 1 keys*(可以看到system-messages这个key) llensystem-messages(可以看大system-messages这个key的长度) (3.4)将logstash收集的日志信息传到es上 在192.168.137.50的服务器上写logstash配置文件: vim /etc/logstash.conf 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 input{ redis{ data_type=> "list" key=> "system-messages" host=> "192.168.137.52" port=> "6379" db=> "1" } } output{ elasticsearch{ host=> "192.168.137.50" protocol=> "http" index=> "system-messages-%{+YYYY.MM.dd}" } } 启动logstash: 1 /usr/local/logstash/bin/logstash -f /etc/logstash .conf 这时我们去看redis的LLENsystem-messages,会发现已经变成了0,这说明数据已经传输到es上了。 网页访问:http://192.168.137.50:9200/_plugin/head/ 会多出来一个system-messages-2016.08.07的分片副本 4、elk中的k(kibana): (4.1)安装: 解压 mv就行 cd /usr/local/kiabna/config/ vim kibana.yml修改: 1 elastcsearch: "http://192.168.137.50:9200" 启动: 1 nohup . /bin/kiban &(默认端口5601) 网页访问: http://192.168.137.50:5601 相关操作需要配合图片说明,这里暂时不说了。 本文转自 sykmiao 51CTO博客,原文链接:http://blog.51cto.com/syklinux/1836732,如需转载请自行联系原作者

优秀的个人博客,低调大师

使用Kubespray 部署kubernetes 高可用集群

Requirements Ansible v2.4 及以上版本,安装python-netaddr到运行Ansible commands的机器 Jinja 2.9 及以上版本,运行Ansible Playbooks 目标servers 必须可以访问外网,可以pull docker images 目标servers 配置允许 IPv4 forwarding 将公钥复制到所有机器 关闭防火墙 请提前安装好docker,因为k8s不支持最新版docker,具体适配哪些docker版本,请看k8s上的changelog 0、环境 主机名 IP master1 172.16.105.21 master2 172.16.105.22 master3 172.16.105.23 node1 172.16.105.24 node2 172.16.105.25 ansible-client 172.16.105.20 1、安装ansible和依赖 在172.16.105.20安装ansible # 安装 python 及 epel yum install -y epel-release python-pip python34 python34-pip # 安装 ansible yum install -y ansible pip install netaddr pip install --upgrade jinja2 2、建立公私钥,分发各服务器 在ansible-clinet机器生成免密密钥对 ssh-keygen -t rsa -P '' 将生成的公钥(id_rsa.pub)传到其他节点,这样ansible-client可以免密登陆其他机器 cat id_rsa.pub >> ~/.ssh/authorized_keys 3、下载kuberspay源码 cd /usr/local/src/ wget https://github.com/kubernetes-incubator/kubespray/archive/v2.3.0.tar.gz 本版本所包含的组件版本 Kubernetes v1.8.1 Docker 1.13.1 etcd v3.2.4 Rkt v1.21.0 (optional) Calico v2.5.0 Weave 2.0.4 Flannel v0.8.0 3.1 禁用docker yum仓和docker安装 vim roles/docker/tasks/main.yml --- - name: gather os specific variables include_vars: "{{ item }}" with_first_found: - files: - "{{ ansible_distribution|lower }}-{{ ansible_distribution_version|lower|replace('/', '_') }}.yml" - "{{ ansible_distribution|lower }}-{{ ansible_distribution_release }}.yml" - "{{ ansible_distribution|lower }}-{{ ansible_distribution_major_version|lower|replace('/', '_') }}.yml" - "{{ ansible_distribution|lower }}.yml" - "{{ ansible_os_family|lower }}.yml" - defaults.yml paths: - ../vars skip: true tags: - facts - include: set_facts_dns.yml when: dns_mode != 'none' and resolvconf_mode == 'docker_dns' tags: - facts - name: check for minimum kernel version fail: msg: > docker requires a minimum kernel version of {{ docker_kernel_min_version }} on {{ ansible_distribution }}-{{ ansible_distribution_version }} when: (not ansible_os_family in ["CoreOS", "Container Linux by CoreOS"]) and (ansible_kernel|version_compare(docker_kernel_min_version, "<")) tags: - facts #禁用docker仓库,已经使用清华源 #- name: ensure docker repository public key is installed # action: "{{ docker_repo_key_info.pkg_key }}" # args: # id: "{{item}}" # keyserver: "{{docker_repo_key_info.keyserver}}" # state: present # register: keyserver_task_result # until: keyserver_task_result|succeeded # retries: 4 # delay: "{{ retry_stagger | random + 3 }}" # environment: "{{ proxy_env }}" # with_items: "{{ docker_repo_key_info.repo_keys }}" # when: not (ansible_os_family in ["CoreOS", "Container Linux by CoreOS"] or is_atomic) #- name: ensure docker repository is enabled # action: "{{ docker_repo_info.pkg_repo }}" # args: # repo: "{{item}}" # state: present # with_items: "{{ docker_repo_info.repos }}" # when: not (ansible_os_family in ["CoreOS", "Container Linux by CoreOS"] or is_atomic) and(docker_repo_info.repos|length > 0) #- name: Configure docker repository on RedHat/CentOS # template: # src: "rh_docker.repo.j2" # dest: "/etc/yum.repos.d/docker.repo" # when: ansible_distribution in ["CentOS","RedHat"] and not is_atomic #- name: ensure docker packages are installed # action: "{{ docker_package_info.pkg_mgr }}" # args: # pkg: "{{item.name}}" # force: "{{item.force|default(omit)}}" # state: present # register: docker_task_result # until: docker_task_result|succeeded # retries: 4 # delay: "{{ retry_stagger | random + 3 }}" # environment: "{{ proxy_env }}" # with_items: "{{ docker_package_info.pkgs }}" # notify: restart docker # when: not (ansible_os_family in ["CoreOS", "Container Linux by CoreOS"] or is_atomic) and (docker_package_info.pkgs|length > 0) #对于docker的版本检测进行了保留 - name: check minimum docker version for docker_dns mode. You need at least docker version >= 1.12 for resolvconf_mode=docker_dns command: "docker version -f '{{ '{{' }}.Client.Version{{ '}}' }}'" register: docker_version failed_when: docker_version.stdout|version_compare('1.12', '<') changed_when: false when: dns_mode != 'none' and resolvconf_mode == 'docker_dns' #对于docker的systemd配置,可以根据自己需求修改,但是注意会覆盖原来的 - name: Set docker systemd config include: systemd.yml - name: ensure docker service is started and enabled service: name: "{{ item }}" enabled: yes state: started with_items: - docker 4、替换镜像 因为长城的原因,需要的镜像在安装的时候无法获取,所以需要改下源码,下载自己私有仓的镜像 脚本内容如下: gcr_image_files=( ./kubespray/roles/download/defaults/main.yml ./kubespray/roles/dnsmasq/templates/dnsmasq-autoscaler.yml.j2 ./kubespray/roles/kubernetes-apps/ansible/defaults/main.yml ) for file in ${gcr_image_files[@]} ; do sed -i 's/gcr.io/docker.emarbox.com/g' $file done 镜像列表,最好提前下载到私有仓,毕竟下载会很慢 gcr.io/google_containers/cluster-proportional-autoscaler-amd64:1.1.1 gcr.io/google_containers/k8s-dns-sidecar-amd64:1.14.5 gcr.io/google_containers/k8s-dns-kube-dns-amd64:1.14.5 gcr.io/google_containers/k8s-dns-dnsmasq-nanny-amd64:1.14.5 gcr.io/google_containers/pause-amd64:3.0 gcr.io/google_containers/kubernetes-dashboard-amd64:v1.6.3 nginx:1.11.4-alpine busybox:latest quay.io/coreos/hyperkube:v1.8.1_coreos.0 quay.io/coreos/etcd:v3.2.4 quay.io/calico/ctl:v1.5.0 quay.io/calico/node:v2.5.0 quay.io/calico/routereflector:v0.4.0 quay.io/calico/cni:v1.10.0 5、配置文件内容 可以对auth的密码进行修改,网络插件默认calico,可替换成weave或flannel,还可以配置是否安装helm和efk,以及修改安装路径 more kubespray/kubespray-2.3.0/inventory/group_vars/k8s-cluster.yml #6、生成自己的集群配置 因为kubespray自带的python脚本是Python3 ,所以要安装Python3 yum install -y python-pip python34 python34-pip # 定义集群IP IP=( 172.16.105.21 172.16.105.22 172.16.105.23 ) # 利用kubespray自带的python脚本生成配置 CONFIG_FILE=./kubespray/inventory/inventory.cfg python3 ./kubespray/contrib/inventory_builder/inventory.py ${IP[*]} 查看配置 cat ./kubespray/inventory/inventory.cfg [all] node1 ansible_host=172.16.105.21 ip=172.16.105.21 node2 ansible_host=172.16.105.22 ip=172.16.105.22 node3 ansible_host=172.16.105.23 ip=172.16.105.23 [kube-master] node1 node2 node3 [kube-node] node1 node2 node3 [etcd] node1 node2 node3 [k8s-cluster:children] kube-node kube-master [calico-rr] [vault] node1 node2 node3 7、安装集群 ansible-playbook -i inventory/inventory.cfg cluster.yml -b -v 镜像地址 kubespray/roles/download/tasks/download_container.yml 8、问题 8.1 从1.8 开始,kubelet 会检测机器是否有swap,如果启用swap,kubelet会无法启动,需要手动添加参数。 去如下目录,修改kubelet参数 /usr/local/src/kubespray/kubespray-2.3.0/roles/kubernetes/node/defaults ### fail with swap on (default true) kubelet_fail_swap_on: false 8.2 注意机器主机名,要符合k8s的规范 9、安装失败如何清理 rm -rf /etc/kubernetes/ rm -rf /var/lib/kubelet rm -rf /var/lib/etcd rm -rf /usr/local/bin/kubectl rm -rf /etc/systemd/system/calico-node.service rm -rf /etc/systemd/system/kubelet.service systemctl stop etcd.service systemctl disable etcd.service systemctl stop calico-node.service systemctl disable calico-node.service docker stop $(docker ps -q) docker rm $(docker ps -a -q) systemctl restart docker 10、安装完成 [root@node2 .kube]# kubectl get nodes NAME STATUS ROLES AGE VERSION node1 Ready master,node 9m v1.8.1+coreos.0 node2 Ready master,node 9m v1.8.1+coreos.0 node3 Ready master,node 9m v1.8.1+coreos.0 11、扩展集群node 把需要添加的node 写入配置文件,然后执行ansible 以添加node4举例 修改 inventory.cfg [all] node1 ansible_host=172.16.105.21 ip=172.16.105.21 node2 ansible_host=172.16.105.22 ip=172.16.105.22 node3 ansible_host=172.16.105.23 ip=172.16.105.23 node4 ansible_host=172.16.105.37 ip=172.16.105.37 [kube-master] node1 node2 node3 [kube-node] node1 node2 node3 node4 [etcd] node1 node2 node3 [k8s-cluster:children] kube-node kube-master [calico-rr] [vault] node1 node2 node3 ansible-playbook -i inventory/inventory.cfg scale.yml -b -v \ --private-key=~/.ssh/private_key 后感 了解ansible,也就能自己随便搞kubespray,这个东西比较透明,不像kubeadm,封装很严,不知道具体流程,出问题也不知道怎么处理。 本文转自银狐博客51CTO博客,原文链接http://blog.51cto.com/foxhound/2044766如需转载请自行联系原作者 战狐

资源下载

更多资源
腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

用户登录
用户注册