首页 文章 精选 留言 我的

精选列表

搜索[搭建],共10007篇文章
优秀的个人博客,低调大师

Docker安装Oracle12C,快速搭建Oracle学习环境

安装说明 1.操作系统CentOS7_x64 2.安装的数据库为Oracle12C 3.已经安装了Docker环境 4.需要检查是否有swap分区,如果没有请设置 安装 1.Docker安装 镜像准备 sh 复制代码 docker pull sath89/oracle-12c 启动镜像 sh 复制代码 docker run -d --name oracle12c -p 8080:8080 -p 1521:1521 -v $PWD/data:/mnt -e TZ=Asia/Shanghai sath89/oracle-12c 注: oracle12c为Docker容器名称 8080:8080为内...

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

CentOS7,8上快速安装Gitea,搭建Git服务器

安装准备 1.安装Git环境 sh 复制代码 yum -y install git 2.下载Gitea运行程序 下载地址:https://dl.gitea.io/gitea/ 注:下载gitea-[版本号]-linux-amd64的运行程序 安装 1.将安装包上传至指定目录 如:/data0/gitea/gitea-linux-amd64 2.重命名安装包 sh 复制代码 mv /data0/gitea/gitea-linux-amd64 /data0/gitea/gitea 3.修改运行权限 sh 复制代码 chmod +x /data0/gitea/gitea 4.直接运行 sh 复制代码...

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

elk搭建完整搭建【篇1】

【参考】 官网: https://www.elastic.co/downloads 参考: http://517sou.net/archives/centos%E4%B8%8B%E4%BD%BF%E7%94%A8elk%E5%A5%97%E4%BB%B6%E6%90%AD%E5%BB%BA%E6%97%A5%E5%BF%97%E5%88%86%E6%9E%90%E5%92%8C%E7%9B%91%E6%8E%A7%E5%B9%B3%E5%8F%B0/ http://my.oschina.net/itblog/blog/547250 http://baidu.blog.51cto.com/71938/1676798 【ELK组成】 Elasticsearch: Searchandanalyzedatainrealtime. Logstash: Collect,enrich,andtransportdata. Kibana: Exploreandvisualizeyourdata. 注意:三个组建缩写ELK 【安装系统环境和软件包】 系統信息: [root@log_serversrc]#du-shelasticsearch-2.2.1.tar.gzlogstash-all-plugins-2.2.0.tar.gzkibana-4.4.2-linux-x64.tar.gz 29Melasticsearch-2.2.1.tar.gz 72Mlogstash-2.2.2.tar.gz 32Mkibana-4.4.2-linux-x64.tar.gz 可以检查的校验码与官网对比是否包已经下载完整 [root@log_serversrc]#sha1sumkibana-4.4.2-linux-x64.tar.gz 6251dbab12722ea1a036d8113963183f077f9fa7kibana-4.4.2-linux-x64.tar.gz [root@log_serversrc]#cat/etc/redhat-release;uname-m CentOSrelease6.4(Final) x86_64 关闭防火墙 [root@log_serversrc]#/etc/init.d/iptablesstatus iptables:Firewallisnotrunning. [root@log_serversrc]#getenforce Disabled 最大文件描述符(默人用户级别的1024太小咯 要求是65536以上) [root@master ~]# ulimit -n 102400 修改方式: 打开文件增加两行/etc/security/limits.conf * soft nofile 102400 * hard nofile 102400 查看 ulimit -n [root@log_serversrc]#java-version javaversion"1.7.0_99" OpenJDKRuntimeEnvironment(rhel-2.6.5.0.el6_7-x86_64u99-b00) OpenJDK64-BitServerVM(build24.95-b01,mixedmode) 注意:jdk可自行网上搜索安装方法 注:由于Logstash的运行依赖于Java环境, 而Logstash 1.5以上版本不低于java 1.7,因此推荐使用最新版本的Java。因为我们只需要Java的运行环境,所以可以只安装JRE,不过这里我依然使用JDK,请自行搜索安装。 (推荐yum安装yum install -yjava-1.7.0-openjdk) yum install -y java-1.8.0-openjdk.x86_64 (推荐用1.8 否则会有警告) !!! Please upgrade your java version, the current version '1.7.0_09-icedtea-mockbuild_2013_01_16_18_52-b00' may cause problems. We recommend a minimum version of1.7.0_51 这是版本建议(推荐1.8) 【下载来自官网源和软件安装介绍】 系统环境和版本信息:本文把ELK套件部署在一台CentOS单机上。 具体的版本要求如下: 1 wgethttps: //download .elasticsearch.org /elasticsearch/release/org/elasticsearch/distribution/tar/elasticsearch/2 .2.1 /elasticsearch-2 .2.1. tar .gz 1 wgethttps: //download .elastic.co /logstash/logstash/logstash-2 .2.2. tar .gz 1 wgethttps: //download .elastic.co /kibana/kibana/kibana-4 .4.2-linux-x64. tar .gz 【安装elasticsearch】 解压、软连接、cd到目录下 1 2 3 tar xvfelasticsearch-2.2.1. tar .gz-C /usr/local/ ln -s /usr/local/elasticsearch-2 .2.1/ /usr/local/elasticsearch cd /usr/local/elasticsearc 安装这个重要的插件: 1 [root@masterelasticsearc] #./bin/plugininstallmobz/elasticsearch-head -> Installing mobz/elasticsearch-head... Plugins directory [/usr/local/elasticsearc/plugins] does not exist. Creating... Trying https://github.com/mobz/elasticsearch-head/archive/master.zip ... Downloading .................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................DONE Verifying https://github.com/mobz/elasticsearch-head/archive/master.zip checksums if available ... NOTE: Unable to verify checksum for downloaded plugin (unable to find .sha1 or .md5 file to verify) Installed head into /usr/local/elasticsearc/plugins/head 创建用户和目录(因为elasticsearch 2.0.0 以上版本不能用root用户运行) 1 2 3 4 5 [root@masterelasticsearc] #groupadd-g1000elasticsearch [root@masterelasticsearc] #useradd-g1000-u1000elasticsearch [root@masterelasticsearc] #sudo-uelasticsearchmkdir/tmp/elasticsearch [root@masterelasticsearc] #ls/tmp/elasticsearch [root@masterelasticsearc] #sudo-uelasticsearchmkdir/tmp/elasticsearch/{data,logs} mkdir /usr/local/elasticsearch/config/scripts 编辑配置文件vim config/elasticsearch.yml 加如以下四行(注意冒号后面有空格): path.data: /tmp/elasticsearch/data path.logs: /tmp/elasticsearch/logs network.host: 192.168.100.10 network.port: 9200 启动配置默认,启动elasticsearch 1 sudo -uelastsearch /usr/local/elasticsearch/bin/elasticsearch 注意:如果正式应用需要在后台运行 1 sudo -uelastsearch /usr/local/elasticsearch/bin/elasticsearch -d 查看进程和端口 [root@master ~]# ps -ef | grep java 1000 9477 9338 2 21:02 pts/4 00:00:07 /usr/bin/java -Xms256m -Xmx1g -Djava.awt.headless=true -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -XX:+HeapDumpOnOutOfMemoryError -XX:+DisableExplicitGC -Dfile.encoding=UTF-8 -Djna.nosys=true -Des.path.home=/usr/local/elasticsearch -cp /usr/local/elasticsearch/lib/elasticsearch-2.2.1.jar:/usr/local/elasticsearch/lib/* org.elasticsearch.bootstrap.Elasticsearch start root 9620 9576 0 21:07 pts/0 00:00:00 grep --color=auto java [root@master ~]# netstat -tulnp |grep java tcp 0 0 ::ffff:192.168.100.10:9200 :::* LISTEN 9477/java tcp 0 0 ::ffff:192.168.100.10:9300 :::* LISTEN 9477/java 注意: 可以看到,它跟其他的节点的传输端口为9300,接受HTTP请求的端口为9200。 #curl 192.168.100.10:9200 { "name":"WilsonFisk", "cluster_name":"elasticsearch", "version":{ "number":"2.2.1", "build_hash":"d045fc29d1932bce18b2e65ab8b297fbf6cd41a1", "build_timestamp":"2016-03-09T09:38:54Z", "build_snapshot":false, "lucene_version":"5.4.1" }, "tagline":"YouKnow,forSearch" } 返回展示了配置的cluster_name和name,以及安装的ES的版本等信息。 刚刚安装的head插件,它是一个用浏览器跟ES集群交互的插件,可以查看集群状态、集群的doc内容、执行搜索和普通的Rest请求等。现在也可以使用它打开http://192.168.100.10:9200/_plugin/head/页面来查看ES集群状态: 上面的功能还是不错的! 【安装Logstash---数据日志存储和传输】 Logstash的功能如下: 其实它就是一个收集器而已,收集(input)和传输(output),我们需要为它指定Input和Output(当然Input和Output可以为多个)。可以指定input的日志和output到elasticsearch中 解压、软连接 1 2 tar xvflogstash-2.2.2. tar .gz-C /usr/local/ ln -s /usr/local/logstash-2 .2.2/ /usr/local/logstash 测试logstash (1) 屏幕输入输出方式测试 /usr/local/logstash/bin/logstash-e'input{stdin{}}output{stdout{}}' 我们可以看到,我们输入什么内容logstash按照某种格式输出,其中-e参数参数允许Logstash直接通过命令行接受设置。这点尤其快速的帮助我们反复的测试配置是否正确而不用写配置文件。使用CTRL-C命令可以退出之前运行的Logstash。 使用-e参数在命令行中指定配置是很常用的方式 不过如果需要配置更多设置则需要很长的内容。这种情况,我们首先创建一个简单的配置文件,并且指定logstash使用这个配置文件。例如:在logstash安装目录下创建 配置logstash 1 2 3 4 5 创建配置文件目录: mkdir -p /usr/local/logstash/etc vim /usr/local/logstash/etc/hello_search .conf 输入下面: #cat/usr/local/logstash/etc/hello_search.conf input{ stdin{ type=>"human" } } output{ stdout{ codec=>rubydebug } elasticsearch{ hosts=>"192.168.100.10:9200" } } 启动: /usr/local/logstash/bin/logstash -f /usr/local/logstash/etc/hello_search.conf (以频幕上输入的方式输入,以rubydebug格式输出到屏幕,并且传递到elasticsearch) 测试logstash日志是否传输到了elasticsearch 通过以下接口: curl'http://192.168.100.10:9200/_search?pretty' 表明已经接收到了日志 至此,你已经成功利用Elasticsearch和Logstash来收集日志数据了。 【安装kibana---展示数据】 注:现在kibanna可以自带了web服务,bin/kibana就可以直接启动了,建议不用nginx进行配合启动了。 使用自带的web 5.1 安装Kibana 下载kibana后,解压到对应的目录就完成kibana的安装 解压、软连接 1 2 tar -xzvfkibana-4.4.2-linux-x64. tar .gz-C /usr/local/ ln -s /usr/local/kibana-4 .4.2-linux-x64/ /usr/local/kibana 启动kibanna 1 /usr/local/kibana-4 .4.2-linux-x64 /bin/kibana 或者 1 /usr/local/kibana/bin/kibana 此时是没有连接上elasticsearch 配置kibanna vim/usr/local/kibana/config/kibana.yml 修改 #elasticsearch.url:"http://localhost:9200" elasticsearch.url:"http://192.168.100.10:9200" 重启 /usr/local/kibana/bin/kibana web访问: 监听了5601作为web端口 使用http://kibanaServerIP:5601访问Kibana,登录后,首先,配置一个索引,默认,Kibana的数据被指向Elasticsearch,使用默认的logstash-*的索引名称,并且是基于时间的,点击“Create”即可。 In order to use Kibana you must configure at least one index pattern. Index patterns are used to identify the Elasticsearch index to run search and analytics against. They are also used to configure fields. 为了后续使用Kibana,需要配置至少一个Index名字或者Pattern,它用于在分析时确定ES中的Index 点击“Discover”,可以搜索和浏览Elasticsearch中的数据,默认搜索的是最近15分钟的数据。可以自定义选择时间。 到此,说明你的ELK平台安装部署完成。 补充: [配置logstash作为Indexer] 将logstash配置为索引器,并将logstash的日志数据存储到Elasticsearch,本范例主要是索引本地系统日志 cat/usr/local/logstash/etc/logstash-indexer.conf input{ file{ type=>"syslog" path=>["/var/log/messages","/var/log/secure"] } syslog{ type=>"syslog" port=>"5544" } } output{ stdout{codec=>rubydebug} elasticsearch{hosts=>"192.168.100.10:9200"} } 执行: /usr/local/logstash/bin/logstash-f/usr/local/logstash/etc/logstash-indexer.conf 执行: echo"谷歌alphago和李世石围棋大战" >> /var/log/messages 刷新kibana 每个收集日志的启动,都是一个独立的进程 本文转自残剑博客51CTO博客,原文链接http://blog.51cto.com/cuidehua/1769525如需转载请自行联系原作者 cuizhiliang

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

使用Docker搭建Cloudera Hadoop 环境搭建

单节点 单节点:https://hub.docker.com/r/cloudera/quickstart/ 相关命令 docker pull cloudera/quickstart:latest docker run --privileged=true --hostname=quickstart.cloudera -p 8020:8020 -p 7180:7180 -p 21050:21050 -p 50070:50070 -p 50075:50075 -p 50010:50010 -p 50020:50020 -p 8888:8888 -t -i 4239cd2958c6 /usr/bin/docker-quickstart /home/cloudera/cloudera-manager --force --express boot2docker user: docker pass: tcuser 说明 Windows下需要采用桥接模式,要不然访问不到容器内的Cloudera Manager端口 集群 集群:https://hub.docker.com/r/cloudera/clusterdock/ 待续未完成

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

ELK搭建

ELK安装 elasticsearch安装 * 下载elasticsearch-5.0.0.tar.gz,并解压。 通过elasticsearch.yml可设置host和port。 vim config/elasticsearch.yml network.host: 192.168.33.10 http.port: 9200 通过jvm.options可设置jvm相关参数。 vim config/jvm.options 后台方式启动elasticsearch。 ./bin/elasticsearch -d 验证是否安装成功,通过http://192.168.33.10:9200/?pretty返回类似下面的json格式即安装成功。 curl 'http://192.168.33.10:9200/?pretty' { "name" : "Y88DRRb", "cluster_name" : "elasticsearch", "cluster_uuid" : "-WVdXX65Rw6dpo7Ne8WX0A", "version" : { "number" : "5.0.0", "build_hash" : "253032b", "build_date" : "2016-10-26T04:37:51.531Z", "build_snapshot" : false, "lucene_version" : "6.2.0" }, "tagline" : "You Know, for Search" } logstash安装 * 下载logstash-5.0.2.tar.gz并解压。 * 验证是否安装成功,通过./bin/logstash -e 'input{stdin{}}output{stdout{codec=>rubydebug}}',然后输入hello。返回类似如下信息则安装成功。 { "message" => "hello", "@version" => "1", "@timestamp" => "2016-11-30T02:40:16.043Z", "host" => "hb-localhost" } kibana安装 * 下载kibana-5.0.1-linux-x86_64.tar.gz并解压。 * 通过kibana.yml可设置kibana主机和端口,及elasticsearch服务地址。 vim config/kibana.yml server.port: 5601 server.host: "192.168.33.10" elasticsearch.url: "http://192.168.33.10:9200" 启动kibana。 ./bin/kibana 浏览器输入http://192.168.33.10:5601/即可进入kibana。 应用日志输出格式 为方便logstash处理,尽量让日志以json格式输出,比如下面格式: {"sql":"select * from product","time":"22","exception":"nullpointException","timeConsuming":"1231ms"} 日志文件名可以以天分割,比如db-2016-11-29.log。 logstash处理日志 创建logstash的配置文件logstash.conf,内容如下。input用于声明日志文件位置及处理相关配置。logstash会匹配db-xxx.log日志并从头开始处理,以json格式解析。output用于声明处理后的输出,将以common-sql-%{+YYYY.MM.dd}索引名输出到192.168.33.10:9200的es上。 input { file { path => "/home/vagrant/logstash/db-logs/db-*.log" start_position => "beginning" type => "sql" codec => json { charset => "UTF-8" } } } output { if "_grokparsefailure" in [tags] { }else{ if [type] == "sql"{ elasticsearch { hosts => ["http://192.168.33.10:9200"] index => "common-sql-%{+YYYY.MM.dd}" } } } } kibana展示 logstash处理后输出到es后即有日志了。 浏览器输入http://192.168.33.10:5601/进入主界面。 创建新的索引匹配 : Management -> Index Patterns -> Add New -> 输入common-sql-* -> Create 查看写入到es的日志记录,Discover -> 选择 common-sql-* -> 右上角选择时间 -> 搜索。 创建一个可视化,Visualize -> Line chart -> common-sql-* -> X-Axis -> Aggregation 选择 Terms -> Field 选择 time.keyword -> Apply changes ========广告时间======== 鄙人的新书《Tomcat内核设计剖析》已经在京东销售了,有需要的朋友可以到 https://item.jd.com/12185360.html 进行预定。感谢各位朋友。 为什么写《Tomcat内核设计剖析》 =========================

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

Redis简单搭建使用与集群的搭建

一、安装Redis1、将压缩包导入虚拟机redis-3.2.9.tar2、进入解压后的文件夹执行命令make3、在当前的目录src下有一系列的可执行的文件,这是与redis相关的命令,将可执行的命令添加到PATH变量中。 find . -type f -executable 4、开启redis服务:# redis-server5、连接reids数据库:# redis-cli redis 数据库的使用1、string字符串类型 设置键值对 set key value127.0.0.1:6379> set a chinaitsoftOK 获取键值:127.0.0.1:6379> get a"chinaitsoft" 将key中存储的数字加1127.0.0.1:6379> set b 2OK127.0.0.1:6379> I

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

kubernates集群搭建

版本 CentOS7 Docker 18.09.0 kubeadm-1.14.0-0 kubelet-1.14.0-0 kubectl-1.14.0-0 calico:v3.9 依赖更新及安装 yum -y update yum install -y conntrack ipvsadm ipset jq sysstat curl iptables libseccomp docker安装 上一篇写的docker的博客内容: https://my.oschina.net/u/2486137/blog/3143027 配置hosts文件 # 设置master的hostname,并且修改hosts文件 sudo hostnamectl set-hostname m #两个slave sudo hostnamectl set-hostname w1 sudo hostnamectl set-hostname w2 # vi /etc/hosts(三台节点都配置一下) master的ip m slave1的ip w1 slave2的ip w2 # 测试 ping m ping w1 ping w2 系统基础配置 # 关闭防火墙 systemctl stop firewalld && systemctl disable firewalld # 关闭selinux setenforce 0 sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config # 关闭swap swapoff -a sed -i '/swap/s/^\(.*\)$/#\1/g' /etc/fstab # 配置iptables的ACCEPT规则 iptables -F && iptables -X && iptables \ -F -t nat && iptables -X -t nat && iptables -P FORWARD ACCEPT # 设置系统参数 cat <<EOF > /etc/sysctl.d/k8s.conf net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 EOF sysctl --system 安装kubeadm, kubelet及kubectl 配置yum源 cat <<EOF > /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64 enabled=1 gpgcheck=0 repo_gpgcheck=0 gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg EOF 安装kubeadm&kubelet&kubectl yum install -y kubeadm-1.14.0-0 kubelet-1.14.0-0 kubectl-1.14.0-0 注意 #因为我这边报了如下错误,所以还需要安装: kubernetes-cni- 0.7.5: Error: Package: kubelet-1.14.0-0.x86_64 (kubernetes) Requires: kubernetes-cni = 0.7.5 Available: kubernetes-cni-0.3.0.1-0.07a8a2.x86_64 (kubernetes) kubernetes-cni = 0.3.0.1-0.07a8a2 Available: kubernetes-cni-0.5.1-0.x86_64 (kubernetes) kubernetes-cni = 0.5.1-0 Available: kubernetes-cni-0.5.1-1.x86_64 (kubernetes) kubernetes-cni = 0.5.1-1 Available: kubernetes-cni-0.6.0-0.x86_64 (kubernetes) kubernetes-cni = 0.6.0-0 Available: kubernetes-cni-0.7.5-0.x86_64 (kubernetes) kubernetes-cni = 0.7.5-0 Available: kubernetes-cni-0.8.6-0.x86_64 (kubernetes) kubernetes-cni = 0.8.6-0 Installing: kubernetes-cni-0.8.7-0.x86_64 (kubernetes) kubernetes-cni = 0.8.7-0 You could try using --skip-broken to work around the problem You could try running: rpm -Va --nofiles --nodigest 但是,如果单独安装kubernetes-cni- 0.7.5之后,继续执行的话会发现又有其他的错误如下所示,始终版本不一致,但是我安装的时候明明指定了1.14.0的版本,反反复复检查之后发现原来直接安装kubernetes-cni- 0.7.5的时候会默认给你安装kubelet,显然不是我们想要的结果: the kubelet version is higher than the control plane version. This is not a supportted version skew and may lead to a malfunctional cluster. kubelet v1.9.3, control plane 1.14.0, 如果出现上述问题请执行 yum install -y kubeadm-1.14.0-0 kubelet-1.14.0-0 kubectl-1.14.0-0 kubernetes-cni-0.7.5 docker和k8s设置同一个cgroup docker vi /etc/docker/daemon.json { "exec-opts": ["native.cgroupdriver=systemd"] } kubelet sed -i "s/cgroup-driver=systemd/cgroup-driver=cgroupfs/g" /etc/systemd/system/kubelet.service.d/10-kubeadm.conf 【`找不到内容没关系`】 重启 systemctl restart docker systemctl enable kubelet && systemctl start kubelet 查看kubeadm使用的镜像 kubeadm config images list 解决国外镜像不能访问的问题 vi kubeadm.sh --------------------------- #!/bin/bash set -e KUBE_VERSION=v1.14.0 KUBE_PAUSE_VERSION=3.1 ETCD_VERSION=3.3.10 CORE_DNS_VERSION=1.3.1 GCR_URL=k8s.gcr.io ALIYUN_URL=registry.cn-hangzhou.aliyuncs.com/google_containers images=(kube-proxy:${KUBE_VERSION} kube-scheduler:${KUBE_VERSION} kube-controller-manager:${KUBE_VERSION} kube-apiserver:${KUBE_VERSION} pause:${KUBE_PAUSE_VERSION} etcd:${ETCD_VERSION} coredns:${CORE_DNS_VERSION}) for imageName in ${images[@]} ; do docker pull $ALIYUN_URL/$imageName docker tag $ALIYUN_URL/$imageName $GCR_URL/$imageName docker rmi $ALIYUN_URL/$imageName done 运行脚本并查看镜像 sh ./kubeadm.sh docker images 初始化master kubeadm init --kubernetes-version=1.14.0 \ --apiserver-advertise-address=master IP \ --pod-network-cidr=10.244.0.0/16 出现如下内容则表示初始化成功 Your Kubernetes control-plane has initialized successfully! To start using your cluster, you need to run the following as a regular user: mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config You should now deploy a pod network to the cluster. Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at: https://kubernetes.io/docs/concepts/cluster-administration/addons/ Then you can join any number of worker nodes by running the following on each as root: kubeadm join xxxxxxx:6443 --token xxxxxx \ --discovery-token-ca-cert-hash sha256:xxxxxxxxxxxxx 根据日志提示依次执行 mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config 查看pod kubectl get pods -n kube-system 可以看到coredns一直处于pending状态,这是因为还未安装网络插件 calico网络插件(也可以选择其他官方推荐的) docker pull calico/cni:v3.9.3 docker pull calico/pod2daemon-flexvol:v3.9.3 docker pull calico/node:v3.9.3 docker pull calico/kube-controllers:v3.9.3 可能会因为网络的原因导致失败,可以配置国内镜像地址 slave节点依次执行master初始化得到的内容 kubeadm join xxxxxxx:6443 --token xxxxxx \ --discovery-token-ca-cert-hash sha256:xxxxxxxxxxxxx 直接执行可能会出现如下内容,执行kubeadm reset再操作即可 [preflight] Running pre-flight checks error execution phase preflight: [preflight] Some fatal errors occurred: [ERROR FileAvailable--etc-kubernetes-bootstrap-kubelet.conf]: /etc/kubernetes/bootstrap-kubelet.conf already exists [ERROR FileAvailable--etc-kubernetes-pki-ca.crt]: /etc/kubernetes/pki/ca.crt already exists [preflight] If you know what you are doing, you can make a check non-fatal with `--ignore-preflight-errors=...` 执行如下命令可以发现集群中已经存在的节点信息 kubectl get nodes

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

搭建jupyter服务

Tips:该文章面向Mac和centos用户,如果是Windows用户,请先安装虚拟机。 概述 Jupyter Notebook(此前被称为 IPython notebook)是一个交互式笔记本,支持运行 40 多种编程语言。 Jupyter Notebook 的本质是一个 Web 应用程序,便于创建和共享文学化程序文档,支持实时代码,数学方程,可视化和 markdown。 用途包括:数据清理和转换,数值模拟,统计建模,机器学习等等。 小试牛刀 如果之前你还不了解jupyter,我建议先在本地来一个全方位的体验! (For Mac) 首先,保证你Mac应该已经安装了python(推荐python3,因为在不久的将来python2将被抛弃!)以及pip命令; 然后,安装jupyter:pip install jupyter (不同环境安装方法参考 安装jupyter ) ; 完成上面的操作就已经安装好了! 最后,启动jupyter:jupyter notebook 启动后会自动打开浏览器,进入首页: 在这里就可以尽情体验jupyter的所有功能了,详情参考 运行jupyter 。 书归正传 上面只是对jupyter的一个简单体验,但是为了方便在何时何地都能使用jupyter,在自己Mac上部署就不能完全满足咱们的需求了。接下来讲述如何在云主机(centos系统)上安装jupyter并通过nginx做代理提供服务。 先展示一下部署成果: 这是我自己的jupyter登录主页!其中,配置了用户认证、HTTPS。 开始部署 建议使用普通用户进行部署! 安装python3及pip yum install -y python36 python36-pip 安装jupyter pip install jupyter 生成jupyter配置文件 jupyter notebook --generate-config 会创建目录 ~/.jupyter 并且该目录下会有一个配置文件 jupyter_notebook_config.py 。 修改配置 c.JupyterApp.config_file = '~/.jupyter/jupyter_notebook_config.py' c.NotebookApp.allow_remote_access = True # 允许远程访问 c.NotebookApp.base_url = '/jupyter' # 设置jupyter的资源主页路径,即[jupyter主页] c.NotebookApp.enable_mathjax = True # 启用mathjax c.NotebookApp.ip = '127.0.0.1' # 设置了访问该jupyter应用的来源机器只能是本机 c.NotebookApp.notebook_dir = '/home/nginx/workspace/js_python' # jupyter工作目录,所有在jupyter创建的文件都会保存到这里 c.NotebookApp.open_browser = False # 禁止启动时自动开启浏览器 c.NotebookApp.password = 'sha1:a937e51de9a1:a567707768cd50d0ac1d40a4fb739510ddb3d8cb' # 用户认证密码 c.NotebookApp.port = 8888 # 监听端口 上面设置了c.NotebookApp.password,通过以下方式获取加密后的密码: In [1]: from notebook.auth import passwd In [2]: passwd() Enter password: Verify password: Out[2]: 'sha1:a937e51de9a1:a567707768cd50d0ac1d40a4fb739510ddb3d8cb' 配置完成后,启动:jupyter notebook 为了方便管理,讲服务加入systemctl管理: # /usr/lib/systemd/system/jupyter.service [Unit] Description=Jupyter Management After=network.target [Service] User=nginx Group=nginx WorkDirectory=/home/nginx/workspace/js_python ExecStart=/usr/local/bin/jupyter notebook Restart=on-failure RestartSec=10 [Install] WantedBy=multi-user.target 启动: $ systemctl daemon-reload $ systemctl start jupyter $ systemctl enable jupyter 配置nginx代理 nginx的安装过程在此不做赘述,参考 编译安装nginx 。 nginx配置如下: ssl.conf配置: ssl_session_timeout 10m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; ssl_prefer_server_ciphers on; ssl_buffer_size 1400; ssl_session_tickets on; ssl_session_cache shared:SSL:10m; ssl on; ssl_certificate /usr/local/nginx/conf/www.xxxx.cn.crt; ssl_certificate_key /usr/local/nginx/conf/www.xxxx.cn.key; client_max_body_size 10m; charset utf-8; site.conf server { listen 80; server_name www.xxxx.cn; rewrite ^/(.*)$ https://www.xxxx.cn/$1 permanent; } server { listen 443; server_name www.xxxx.cn; include /usr/local/nginx/conf/servers/common/ssl/www_ssl_config.conf; location /jupyter { proxy_pass http://jupyter; proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_http_version 1.1; # websocket support proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "Upgrade"; proxy_read_timeout 86400; proxy_redirect off; # 白名单 allow 121.xx.xx.xx; deny all; } } upstream jupyter { server 127.0.0.1:8888; } 配置完成后启动nginx,在浏览器访问www.xxxx.cn/jupyter 。 Completed!

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

window zookeeper搭建

下载安装包 https://archive.apache.org/dist/zookeeper/ 下载后解压 初次点击zkServer.cmd启动会报错、闪退现象 如出现闪退无法看到错误日志,用编辑器打开zkServer.cmd文件在最底下添加pause在启动就能看到错误日志 因为没有zoo.cf文件,需要前往conf目录下复制zoo_sample.cfg文件,修改文件名为zoo.cfg 再次启动 点击zkServer.cmd启动,可能还会报错 会出现以下错误,说明找不到JAVA_HOME 通过编辑器打开zkEnv.cmd文件修改 set JAVA_HOME="C:\installs\Java\jdk1.8.0_162" C:\installs\Java\jdk1.8.0_162为自己jdk安装目录 再次启动成功 注意zoo.cf文件几个重要位置: dataDir=./ 临时数据存储的目录(可写相对路径) clientPort=2181 zookeeper的端口号 使用zkCli.cmd测试 ls /:列出zookeeper根下保存的所有节点 create –e /atguigu 123:创建一个atguigu节点,值为123 get /atguigu:获取/atguigu节点的值

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

SSM环境搭建

环境配置 IDEA 下载 版本:2018.1.7 下载地址:https://www.jetbrains.com/idea/download/#section=mac 安装 注册码地址:http://idea.lanyus.com/ 使用前将以下内容复制到hosts文件中: 0.0.0.0 account.jetbrains.com folder中快捷键:command+shift+G /etc/hosts sudo vi /etc/hosts sudo 安装IDEA并输入网页中的注册码 数据库 Mysql 下载安装 MySQL官网网站:https://dev.mysql.com/downloads/mysql/ 环境变量配置 打开terminalvim .bash_profile 使用vim进入.bash_profile文件进行文件配置 进入文件后按字母i进行添加 配置环境变量export PATH=${PATH}:/usr/local/mysql/bin 如果以前没有配置过环境变量,那么这应该是一个空白文档。如果有内容,请在结束符前输入,如果没有内容,请直接输入如下语句: export PATH=${PATH}:/usr/local/mysql/bin 完成后按esc退出,再按:输入wq进行保存,最后关闭终端并退出。 设置root密码 我们先在终端输入 mysql -u root -p 出现问题ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES) 原因:未设置root密码 或者密码设置格式错误 解决如下: 苹果->系统偏好设置->关闭mysql服务(点击stop mysql server) 进入终端输入:cd /usr/local/mysql/bin/ 回车后 登录管理员权限sudo su 回车后输入以下命令来禁止mysql验证功能./mysqld_safe --skip-grant-tables & 输入命令 ./mysql 回车后,输入命令FLUSH PRIVILEGES; (‘;’回车不能忘记) 回车后,输入命令 ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';(MyNewPass处输入你的密码)// //注意,这里的密码要用包含8位大写+小写+特殊字符+数字的密码 至此修改结束,重启终端后,输入 mysql -u root -p 回车 再键入密码:MyNewPass 就启动成功。 关于解决密码报错的问题 因为现在是新版本8.0了 ,老版本的修改密码的语法已不再适用,mysql 5.7.9以后废弃了password字段和password()函数; 1.mysql>use mysql; 2.mysql>FLUSH PRIVILEGES; 3.mysql>ALTER user ‘root’@‘localhost’ IDENTIFIED BY ‘newpassward’ //注意,这里的密码要用包含8位大写+小写+特殊字符+数字的密码 4.mysql>quit; 退出mysql; 5.mysql -uroot -p 最后直接用mysql -uroot -p 输入刚才设置的密码即可正常登录! Maven 下载安装 Maven官网:http://maven.apache.org/download.cgi Archives 将apache-maven-3.5.0-bin.tar.gz解压到以下目录 /Users/luzihai/Documents/ 配置环境变量 打开终端: vim ~/.bash_profile export M2_HOME=/Users/xxx/Documents/apache-maven-3.6.0 export PATH=$PATH:$M2_HOME/bin 保存并退出,执行以下命令并生效 source ~/.bash_profile 查看配置是否生效,输入 mvn -v Apache Maven 3.6.0 (97c98ec64a1fdfee7767ce5ffb20918da4f719f3; 2018-10-25T02:41:47+08:00) Maven home: /Users/luzihai/Documents/apache-maven-3.6.0 Java version: 11, vendor: Oracle Corporation, runtime: /Library/Java/JavaVirtualMachines/jdk-11.jdk/Contents/Home Default locale: zh_CN_#Hans, platform encoding: UTF-8 OS name: "mac os x", version: "10.12.6", arch: "x86_64", family: "mac" 修改配置文件 /Users/luzihai/Documents/apache-maven-3.6.0/conf/settings.xml 修改本地repo地址为 MavenRepository是自己建的文件名 <localRepository>/Users/luzihai/Documents/MavenRepository</localRepository> <mirror> <id>mirrorId</id> <mirrorOf>repositoryId</mirrorOf> <name>Human Readable Name for this Mirror.</name> <url>http://my.repository.com/repo/path</url> </mirror> 修改为阿里云仓库(不改好像也挺快的) <mirror> <id>nexus-aliyun</id> <mirrorOf>*</mirrorOf> <name>Nexus aliyun</name> <url>http://maven.aliyun.com/nexus/content/groups/public</url> </mirror> Mybatis Config <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <properties resource="db.properties"></properties> <settings> <!--缓存--> <setting name="cacheEnabled" value="true"/> <!--<setting name="lazyLoadingEnabled" value="true"/>--> <!--<setting name="multipleResultSetsEnabled" value="true"/>--> <!--<setting name="useColumnLabel" value="true"/>--> <!--<setting name="useGeneratedKeys" value="false"/>--> <!--<setting name="autoMappingBehavior" value="PARTIAL"/>--> <!--<setting name="autoMappingUnknownColumnBehavior" value="WARNING"/>--> <!--<setting name="defaultExecutorType" value="SIMPLE"/>--> <!--<setting name="defaultStatementTimeout" value="25"/>--> <!--<setting name="defaultFetchSize" value="100"/>--> <!--<setting name="safeRowBoundsEnabled" value="false"/>--> <!--下划线风格转换为驼峰风格--> <setting name="mapUnderscoreToCamelCase" value="true"></setting> <!--LOG4J日志--> <setting name="logImpl" value="LOG4J"></setting> <!--<setting name="localCacheScope" value="SESSION"/>--> <!--<setting name="jdbcTypeForNull" value="OTHER"/>--> <!--<setting name="lazyLoadTriggerMethods" value="equals,clone,hashCode,toString"/>--> </settings> <environments default="dev"> <environment id="dev"> <transactionManager type="JDBC"></transactionManager> <dataSource type="UNPOOLED"> <property name="driver" value="${driver}" /> <property name="url" value="${url}" /> <property name="username" value="${username}" /> <property name="password" value="${password}" /> </dataSource> </environment> </environments> <!-- Continue going here --> <mappers> <!--单个xml加载--> <!--<mapper resource="com/hz/mapper/GirlMapper.xml"></mapper>--> <!--加载整个包--> <package name="com.hz.mapper"></package> </mappers> </configuration> Mapper <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> db.properties driver=com.mysql.cj.jdbc.Driver url=jdbc:mysql://localhost:3306/mybatis username=root password=123456789 log4j.proerties # Global logging configuration log4j.rootLogger=ERROR, stdout # MyBatis logging configuration... #log4j.logger.org.mybatis.example.BlogMapper=TRACE log4j.logger.com.hz.mapper=TRACE # Console output... log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n Spring 依赖 <!-- https://mvnrepository.com/artifact/org.springframework/spring-context --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.1.3.RELEASE</version> </dependency> 配置文件 applicationContext.xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <!--将对象得创建交给spring 容器 在这个配置文件里去生命要什么对象--> <!--class 写java类的全限定类名--> <bean class="com.hz.pojo.Girl" id="girl"> </bean> </beans> SpringMVC Web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1" metadata-complete="true"> <!--注册一个前端控制器叫做DispatcherServlet--> <servlet> <!--如果不修改spring配置文件默认的位置 那么springmvc会去web-inf下面找一个springmvc-servlet.xml的文件 --> <servlet-name>springmvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <!--<init-param>--> <!--&lt;!&ndash;xml文件的名字 重命名&ndash;&gt;--> <!--<param-name>namespace</param-name>--> <!--<param-value>mvc1218</param-value>--> <!--</init-param>--> <init-param> <param-name>contextConfigLocation</param-name> <!--classpath也就是resources文件夹下的springmvc 可改名--> <param-value>classpath:springmvc.xml</param-value> </init-param> </servlet> <!--servlet映射配置--> <servlet-mapping> <servlet-name>springmvc</servlet-name> <!--这里写 / --> <url-pattern>/</url-pattern> </servlet-mapping> </web-app> Springmvc.xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <!--常用内部资源视图解析器--> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <!--1 前缀--> <property name="prefix" value="/jsp/"/> <!--2 后缀--> <property name="suffix" value=".jsp"/> </bean> <!--写一个测试案例--> <bean class="com.yimo.controller.HelloController" name="/helloController"></bean> </beans>

资源下载

更多资源
优质分享App

优质分享App

近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。

Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

JDK

JDK

JDK是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。