반응형
Ecliipse에서 plugin으로 설치하여 사용할 수 있는 PyDev Python 개발툴 사용법이다.
 
(Eclipse Market Place에서 설치하면 간단)
 
설치하고 아면 Python 프로젝트 또는 Python 모듈을 생성할 수 있다.
 
 

여기에 기존에 사용하던 VirtualEnv 환경을 적용하려면
 

 

Pointing to /venv/env1/bin/python and /venv/env2/bin/python2 should do the trick...
 
VirtualEnv로 만들어진 가상 디렉토리를 직접 Python 환경으로 지정하면 된다.
  • Eclipse Interpreter
 
  • Project 세팅
 
 
 
 
 
 
 
Posted by Hey Jerry
,

Maven Profile + Exec Java

기술 2019. 8. 7. 14:32
반응형
 
참고 웹싸이트
 
샘플 - Profile 샘플
    <!--DetectIntentAudio-->
    <profile>
      <id>DetectIntentAudio</id>
      <activation>
        <property>
          <name>DetectIntentAudio</name>
        </property>
      </activation>
      <build>
        <plugins>
          <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>exec-maven-plugin</artifactId>
            <version>1.6.0</version>
            <executions>
              <execution>
                <goals>
                  <goal>java</goal>
                </goals>
              </execution>
            </executions>
            <configuration>
              <mainClass>com.example.dialogflow.DetectIntentAudio</mainClass>
              <cleanupDaemonThreads>false</cleanupDaemonThreads>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
 
위와 같은 경우 아래와 같이 Eclipse에서 실행 가능
 
 
 
 
 
Posted by Hey Jerry
,
반응형
 
Dialogflow 샘플코드 작성 중... gRPC 인터페이스의 메시지 포맷을 보고 싶어서(IDL 없이 gRPC 기반 API만 받은 경우)
다음과 같은 코드를 작성해 보았다. Dialogflow에 있는 InputAudioConfig 라는 객체를 분해해서 파라미터 포맷을 출력한다.
 
      Iterator<FieldDescriptor> it = InputAudioConfig.getDescriptor().getFields().iterator();
      while(it.hasNext()) {
          FieldDescriptor fd = it.next();
          System.out.println(fd);
      }
      
      it = InputAudioConfig.getDescriptor().getExtensions().iterator();
      while(it.hasNext()) {
          FieldDescriptor fd = it.next();
          System.out.println(fd);
      }
      
      Map<FieldDescriptor, Object> allOptions = InputAudioConfig.getDescriptor().getOptions().getAllFields();
      it = allOptions.keySet().iterator();
      while(it.hasNext()) {
          FieldDescriptor fd = it.next();
          System.out.println(fd);
      }
      
      Iterator<OneofDescriptor> it2 = InputAudioConfig.getDescriptor().getOneofs().iterator();
      while(it2.hasNext()) {
          OneofDescriptor fd = it2.next();
          System.out.println(fd);
      }
 
      it = QueryInput.getDescriptor().getFields().iterator();
      while(it.hasNext()) {
          FieldDescriptor fd = it.next();
          System.out.println(fd);
      }
      
      // Instructs the speech recognizer how to process the audio content.
      InputAudioConfig inputAudioConfig = InputAudioConfig.newBuilder()
          .setAudioEncoding(audioEncoding) // audioEncoding = AudioEncoding.AUDIO_ENCODING_LINEAR_16
          .setLanguageCode(languageCode) // languageCode = "en-US"
          .setSampleRateHertz(sampleRateHertz) // sampleRateHertz = 16000
          .setModel("phone_call")
          .setModelVariant(SpeechModelVariant.USE_ENHANCED)
//          .setModelVariantValue(SpeechModelVariant.USE_ENHANCED_VALUE)
//          .setField(field, value)
          .build();
      
      OutputAudioEncoding outputAudioEncoding = OutputAudioEncoding.OUTPUT_AUDIO_ENCODING_LINEAR_16;
      int outputSampleRateHertz = 16000;
      OutputAudioConfig outputAudioConfig =
          OutputAudioConfig.newBuilder()
              .setAudioEncoding(outputAudioEncoding)
              .setSampleRateHertz(outputSampleRateHertz)
              .build();
      // Build the query with the InputAudioConfig
      QueryInput queryInput = QueryInput.newBuilder().setAudioConfig(inputAudioConfig).build();
 

'기술' 카테고리의 다른 글

Python PyDev IDE 개발툴  (0) 2019.08.07
Maven Profile + Exec Java  (0) 2019.08.07
Window에서 taskmgr(task manager) 대치  (0) 2019.08.07
OpenStack All-In-One 설치 과정  (0) 2019.08.07
TCP 다이어그램과 CLOSE_WAIT + FIN_WAIT  (0) 2019.08.07
Posted by Hey Jerry
,
반응형

사실 최근에 많이 나오는 5G를 사용하라고 추천하고 싶다. 다만, 5G는 벽을 잘 투과하지 못해 벽이 많은 가정에서는 도달 거리가 짧은 단점이 있으므로, 기존 2.4G 방식에 대해서 알아보자.

 

추천
 
  • 1, 5, 9, 13번 채널 중의 하나 사용 (단, 미국 WiFi 규격에는 채널 13번이 없으므로, 미국에서 직구한 기기랑 호환이 안되는 경우 있을 수 있음)
  • 중간 채널을 사용하면 근접 채널에 혼선
  • 20MHz 채널폭 사용 (40Mhz 중복 가능성 높음)

참고로 다음은 우리 집의 세팅이다.

 
==> 13번은 chromecast에서 사용 불가능 (미국 직구 ㅠㅠ)
 
 
Vistumbler 라는 프로글램을 사용하면 보다 과학적으로 찾아낼 수 잇다.
 
아래와 같이 표시. 간섭이 되고 있는 WiFi들이 표시되므로 간섭이 덜한 채널을 선택하면 된다.

무선랜(Wi-Fi) 성능 최적화 채널 선택 방법
최적화 채널 선택으로 무선랜(Wi-Fi)가 혼선으로 인해 발생되는 속도 저하 등을 해결할 수 있습니다.
사설 무선랜 공유기(AP) 이용자 (공공기관, 기업, 가정 등)
  • - 무선랜 공유기 설치 시 무선랜용 채널(1~13) 중 전파간섭이 적은 채널(1, 5 ,9 ,13) 중에서 1개를 선택 하여 사용할 것을 권장합니다.
  • - 무선랜 공유기 설치 시 무선랜 성능을 최대화 할 수 있도록 타 무선랜 공유기와 충분한 거리를 확보하여 설치 및 사용 할 것을 권장합니다.
  • - 무선랜 공유기의 채널대역폭은 22㎒이하로 설정하여 운영할 것을 권장합니다.
  • - 혼/간섭 최소화 및 개인정보보호 등을 위해 무선랜 공유기 제품에서 제공하는 최신 보안기술을 이용 할 것을 권장합니다.
  • - 혼/간섭, 전송속도 감소 또는 무선랜 접속이 어려운 경우, 제품 설명서에 있는 혼신 최소화 조치방안 또는 한국전파진흥협회 홈페이지(www.rapa.or.kr) “무선랜 채널혼신 조치사항”을 참고 하시기 바랍니다.
 
무선랜(Wi-Fi) 관련 주요 용어 설명
SSID(Service Set Identifier)
엑세스 포인트와 무선랜 단말기가 상호간 통신을 위해 사용하는 고유의 식별자로서, 동일한 SSID를 가진 무선랜 단말기만이 네트워크에 접근을 허용한다. <SKT(T wifi zone), KT(QOOKnSHOW), LGU+(myLGnet(U+net), U+ACN(U+zone) 등>
Wi-Fi(Wireless Fidelity)
Wi-Fi(Wireless Fidelity)의 약자로 무선 이더넷 호환성 협회(WECA, Wireless Ethernet Compatibility Alliance)에서 802.11b 무선 이더넷 표준에 대해 상호 호환성을 가지는 무선랜 및 PC 카드에 부여하는 로고이다.
대역폭(Bandwidth)
네트워크에서 이용할 수 있는 신호의 최고 주파수와 최저 주파수의 차이를 말하나, 일반적으로는 통신에서는 이용 가능한 최대 전송속도, 즉 정보를 전송할 수 있는 능력을 뜻하며, 그 기본 단위로는 bps를 사용한다.
엑세스 포인트(AP: Access Point)
엑세스 포인트는 무선랜을 구성하는 장치 중 하나로서, 사용자가 네트워크에 접속 할 수 있도록 무선랜이 유선 네트워크에 접속할 수 있도록 서비스를 제공하는 장치이다.
전파간섭(Radio Interference)
동일한 주파수를 이용하는 기기 간에 간섭이 발생하여 다른 무선국의 정상적인 운용을 방해하거나, 접속 실패 및 전송 속도를 저하시키는 현상을 말한다.
채널(Channel)
송신기와 수신기 사이에 신호를 전송하기 위한 통신로, 통신채널에 의해 점유된 주파수 대역을 말한다.
ISM(Industrial Scientific Medical)
정부의 주파수 규제나 사용에 관한 신고 없이 누구나 사용할 수 있는 주파수 대역으로 2.400~2.483GHz 대역에서 무선랜, 블루투스 등의 통신 장비를 자유로이 사용할 수 있다.

 

 

'IT 팁 ' 카테고리의 다른 글

MacOSX 네트워크 순서 변경  (0) 2021.01.11
Thunderbird 메일 백업  (0) 2019.08.07
지도 API 상업적용도 사용 정책(Google, Naver, Daum)  (0) 2019.08.07
Posted by Hey Jerry
,
반응형
Thunderbird 메일 백업을 위한 여러 가지 방법을 시도한 결과이다.
 
 
*** 초기 방법: add-on 설치
 
BatchCopy 또는 Copy Folder
ImportExportTools
 
 
*** 절차
 
0. 백업 디렉토리보고 현재 백업된 날짜 확인
  - 삭제 가능한 메일이 있다면 삭제
  - 충분한 공간 확보 됐으면 백업 불필요
 
1. BatchCopy나 Copy Folder를 이용해 로컬 디렉토리로 메일 복사
  - 현재 날짜까지 모든 메일
  - 계정 디렉토리 전체를 한꺼번에 복사 
 
2. ImportExportTools 설정에서 MBOX 파일로 폴더 내보내기 선택
 
3. 로컬 디렉토리의 복제본에서 불러오기/내보내기 --> 하위폴더와 함께 내보내기(구조포함)
  - 위치는 파일시스템 디렉토리로 지정
  - 완료 후 파일(.sbd 폴더와 함께) 명 앞에 날짜를 넣어 구분
 
4. 메일 삭제
  - 백업 디렉토리를 보고 해당 날짜까지 삭제 가능
 
 
**** 더 나은 방법 !!!!!
 
1. 검색 폴더를 만드는데 조건을 '1년 보다 오래된 메시지' 이런식으로 작성
==> 온라인으로 검색 옵션을 부여하여 혹시 동기화 안된 서버 메시지도 포함
 
2. 해당 폴더를 ImportExport Addon을 사용하여 백업
 
해당 메시지를 전부 선택한 후, "선택한 메시지 저장" ==> "Mbox 파일로(새 파일"
 
3. 내보낼 파일 명은 가장 최신 메일의 날짜
 
jerryosci-2015-10-04-Inbox
(메일 계정 + 최신 메일 날짜 + 폴더)
 
4. 내보내기 중에는 아래와 같이 진행 상태 보임
 
 
5. 검색 폴더에서 메시지 선택 후 삭제
 
6. 폴더 압축
 
 
 
Posted by Hey Jerry
,
반응형
개인적으로 지도를 사용하는 것은 무료이지만, 비즈니스 목적으로 사용하는 것은 각 사업자별로 정책이 다르다.
유료인 경우도 있다.

Google (네비게이션 목적이나 비공개 사이트 제한)


※ 사용제한 항목

1. 유료회원제 사이트인경우(유료로 가입하지 않으면 이용이 안되는 사이트)
2. 사내인트라넷과 같은 비공개 사이트
3. 자산(부동산등), 차량추적을가지는 사이트(말하자면 내비게이션)

위에 해당하는 경우 연간 1만불정도의 프리미엄 서비스에 가입 요함.

http://code.google.com/intl/ko-KR/apis/maps/faq.html#geocoder_limit 
 
내부 사용일 경우 문제이고 외부 오픈의 경우 큰 문제 없음
 

Daum (일정 부분까지는 무료 사용 가능)

무료사용가능

1. 개인, 법인(정부기관, 정부투자기관 등 일반 사기업이 아닌 모든 법인 제외)인 경우
2. 웹사이트(웹브라우저를 이용하여 접속 가능한 것에 한함)에서 1일 기준 10만 PV(Page View) 미만으로 사용하는 경우
3. 웹사이트(웹브라우저를 이용하여 접속 가능한 것에 한함)에서 1일 기준 1만 쿼리(Query) 미만으로 사용하는 경우
4. 지도 인쇄물 배포를 목적으로 하는 경우 동일하거나 동일한 것을 일부 수정한 것에 대해 1,000부 미만을 배포하는 경우
5. 비상업적 목적의 경우
6. 기타 회사가 이용을 제한하거나 금지하지 않는 경우

사전협의 후 가능

1. 정부 및 정부투자기관에서 사용하는 경우
2. 1일 기준 10만 PV(Page View) 이상 사용하는 경우
3. 1일 기준 1만 쿼리(Query) 이상 사용하는 경우
4. 웹사이트 이외의 어플리케이션에서 사용하는 경우
5. 차량, 배송, 물류 등 운송수단과 관련된 시스템에서 사용하는 경우
6. CRM, 관제 등 기업용 시스템에서 사용하는 경우
7. 지도 인쇄물 배포를 목적으로 하는 경우 동일하거나 동일한 것을 일부 수정한 것에 대해 1,000부 이상을 배포하는 경우
8. 광고나 유료서비스 등의 상업적인 목적으로 사용하는 경우
9. 제1호 내지 제8호 이외의 회사가 별도로 정하는 경우


Naver (상업적인 경우 계약을 해야 함)

Q&A 내용 중

9. Open API의 상업적인 용도의 사용의 의미는 무엇인가요?

네이버 Open API 사용에 있어서 제한을 두고 있는 '상업적 용도의 사용은 네이버 Open API를 이용한 직접적인 수익사업을 벌이는 경우를 의미합니다.

 이 는 다양한 매쉬업을 통하여 제휴사 사이트에서 수익을 내는 것을 금지한다는 뜻이 아니라, Open API를 이용하여 키워드 광고, 배너 광고 등을 유치한다거나 Open API를 활용한 서비스를 보여주는 대가로 사용자에게 과금을 하는 등의 직접적인 수익사업과의 연계를 의미합니다.
 즉, 법인 사용자나 상업적 사이트에서도 위 사항에 반하지 않는다면 네이버 Open API를 자유롭게 사용하실 수 있습니다.

ex)
- 상업적인 사용으로 판단되는 경우
1) Open API를 활용한 검색기능을 제공하는 사이트에서
    스폰서 링크, 파워 링크 등의 유료 등록 사이트를 검색결과의 상단에 노출하여 수익을 내는 경우
2) 각 메뉴를 사용함에 있어서 과금을 하는 형태의 지역정보 사이트에서
    네이버 지도 API를 통한 지도 보기 서비스에 과금하는 서비스를 제공하는 경우

- 상업적인 사용이 아닌 경우
1) 물품 판매로 수익을 창출하는 인터넷 쇼핑몰 사이트에서
    네이버 지식iN, 블로그 검색 API를 활용하여 쇼핑 물품에 대한 검색 결과를 제공하여 주고자 하는 경우
2) 부동산 관련 유료 정보 제공 사이트에서
   등록된 부동산 매물 정보의 위치를 보여주기 위한 부가 서비스로서의 네이버 지도 API를 활용하는 경우
 
 
 
 
 
 
 
 

'IT 팁 ' 카테고리의 다른 글

MacOSX 네트워크 순서 변경  (0) 2021.01.11
무선랜(Wi-Fi) 성능 최적화 채널 선택 방법  (0) 2019.08.07
Thunderbird 메일 백업  (0) 2019.08.07
Posted by Hey Jerry
,
반응형
 
다음 위치에서
 
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\taskmgr.exe
 
다음과 같이 변경하면 됨
 
이 때 파라미터로 원래 taskmgr.exe 실행 경로가 오므로 주의
 
"C:\Windows\system32\taskmgr.exe"
 
procexp.exe는 파라미터가 있으면 에러가 나므로 batch 파일을 만들어 피해가게 했음
 
 
 
 
 

'기술' 카테고리의 다른 글

Maven Profile + Exec Java  (0) 2019.08.07
gRPC Protobuf 메시지 포맷/필드 보는 샘플 코드  (0) 2019.08.07
OpenStack All-In-One 설치 과정  (0) 2019.08.07
TCP 다이어그램과 CLOSE_WAIT + FIN_WAIT  (0) 2019.08.07
CentOS 7 KVM 설치  (0) 2019.08.07
Posted by Hey Jerry
,
반응형
==> 내부 Lion 서버에 openstack1 이라는 이름으로 설치
 
*** 새로운 설치 (기존 방법 포기하고... 각자 KVM에서 VM 인스턴스를 만들어 설치)
 
1. Baremetal 서버의 Bridge Network 설정
 
먼저 bridge 모듈 설치
yum install bridge-utils
 
KVM Host 서버의 외부 접속 Ethernet을 Bridge로 변경
(10.0.0.100이 할당된 것)
 
[root@Tiger ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth7
DEVICE=eth7
HWADDR=A0:D3:C1:EF:F6:30
TYPE=Ethernet
UUID=ceebc5a7-338d-456b-b752-98cae0d7e700
ONBOOT=yes
BOOTPROTO=static
BRIDGE=br7
 
==> 기존 Ethernet의 IP를 아래 Bridge로 옮김
 
[root@Tiger ~]# cat /etc/sysconfig/network-scripts/ifcfg-br7
DEVICE=br7
TYPE=Bridge
ONBOOT=yes
BOOTPROTO=static
DELAY=0
IPADDR=192.168.0.240
NETMASK=255.255.255.0
GATEWAY=192.168.0.1
 
2. CentOs 7 VM 이미지 생성
  http://www.centos.org/download/ 에서 Minimal Install Image 선택
  
 
  ==> openstack1으로 생성 (마스터 VM 이미지)
3. 생성된 CentOS VM의 NIC 중 하나를 위에 생성된 br7으로 변경
 
virt-manager의 VM 설정 화면에서...
NIC를 선택하고 Device에 'Specify shared device name'
Bridge name에 'br7' (위에서 br7으로 생성)
 
4. CentOS VM 에 연결할 수 있는 VNC 할당
 
다음과 같이 VNC 포트 수정. IP는 KVM Host(Baremetal)의 IP
virsh # edit openstack1
 
    <graphics type='vnc' port='6901' autoport='no' listen='10.0.0.100'>
      <listen type='address' address='10.0.0.100'/>
    </graphics>
그러면 다음과 같이 VNC Listening 하고 접속 가능
 
virsh # vncdisplay openstack1
10.0.0.100:1001
 
[root@Lion ~]# netstat -an | grep 690
tcp        0      0 10.0.0.100:6901              0.0.0.0:*                   LISTEN
 
 
 
파이어월에 의해 69XX 포트가 접속이 안되는 경우가 있으므로 다음과 같이 완전히 OFF 하거나 예외를 추가해야 함
 
파이어월 OFF
systemctl stop firewalld
69XX 포트 예외 추가
[root@server ~]# firewall-cmd --permanent --zone=public --add-port=69XX/tcp
[root@server ~]# firewall-cmd --reload
 
 
5. CentOS VM을 여러 개 복제 생성
 
다음과 같이 virt-clone 툴 설치
 
yum install virt-install.noarch
virt-clone --original openstack1 --name openstack2 --file /var/lib/libvirt/images/openstack2.img
 
4번 과정을 참고해서 각 VM에 맞게 VNC 포트 변경
 
 

6. 각자 VM에서 ifcfg-eth0의 IP 및 MAC addr 변경
 
미리 ip a 또는 ifconfig 명령으로 eth0에 새로 할당된 MAC Addr 확인 후
아래 정보를 각자 환경에 맞게 수정
 
[root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0
HWADDR="52:54:00:AB:AF:48"
TYPE="Ethernet"
BOOTPROTO="static"
IPADDR=192.168.0.61
GATEWAY=192.168.0.1
NAME="eth0"
UUID="fed9319b-ef74-4be9-a1bd-9044b6d5641a"
ONBOOT="yes"
 
DNS 서버를 세팅
 
[root@localhost ~]# cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 10.0.0.2
nameserver 210.94.0.73
 
 
7. PackStack으로 OpenStack 설치
 
root로 로그인 해서
 
ELEP 패키지 Repository 설정
 
OpenStack IceHouse 버전 Repository 설정
 
PackStack 설치
yum install openstack-packstack
 
 
8. Answer 파일 준비
 
다음 파일을 각자 IP에 맞게 수정
 
vi에서 :%s/192.168.25.13/<각 서버 IP>/g
 
 
9. PackStack에 있는 버그 때문에 MongoDB(Ceilometer의 스토리지로) 설치 중 에러
 
Workaround로 다음과 같이 작업
 
cd /var/run/mongodb
ln -s mongodb.pid mongod.pid 
 
 
9. 설치 작업
 
packstack --answer-file=my_answers.txt
 
==> 약 30분 정도 작업
 
대략 다음과 같은 화면이 나오면 All In One 설치 완료
 
 
10. 접속
 
대시보드 접속 (horizon): http://10.0.0.51/
  ==> ID/PW는 다음과 같이 keystonerc_admin 파일에 들어 있음
[root@localhost ~]# cat keystonerc_admin
export OS_USERNAME=admin
export OS_TENANT_NAME=admin
export OS_PASSWORD=780a485e394b4013

export OS_AUTH_URL=http://192.168.0.61:5000/v2.0/
export PS1='[\u@\h \W(keystone_admin)]\$ '
 
 
Nagios 접속
  ==> ID/PW는 다음과 같이 설치 확인 메시지 참고
 * To use Nagios, browse to http://192.168.0.61/nagios username: nagiosadmin, password: 84093c56484344de
 
 
이 패스워드들은 my_answers.txt 파일에 저장이 되어 있으므로 8번 과정에서 미리 Text 파일을 수정해서 원하는 패스워드를 사용할 수도 있음
 
[root@localhost ~]# ls -l
합계 40
-rw-r--r--. 1 root root   196 12월 16 21:37 a.txt
-rw-------. 1 root root   936 12월 16 20:34 anaconda-ks.cfg
-rw-r--r--. 1 root root   120 12월 16 21:36 b.txt
-rw-------. 1 root root   179 12월 16 22:41 keystonerc_admin
-rw-------. 1 root root   176 12월 16 22:41 keystonerc_demo
-rw-r--r--. 1 root root 17628 12월 16 22:02 my_answers.txt

 
11. OpenStack 설치 및 동작 상태 확인
 
[root@localhost ~]# source keystonerc_admin
==> Admin 유저 환경 변수 세팅
 
[root@localhost ~(keystone_admin)]# openstack-status
== Nova services ==
openstack-nova-api:                     active
openstack-nova-cert:                    active
openstack-nova-compute:                 active
openstack-nova-network:                 inactive  (disabled on boot)
openstack-nova-scheduler:               active
openstack-nova-volume:                  inactive  (disabled on boot)
openstack-nova-conductor:               active
== Glance services ==
openstack-glance-api:                   active
openstack-glance-registry:              active
== Keystone service ==
openstack-keystone:                     active
== Horizon service ==
openstack-dashboard:                    active
== neutron services ==
neutron-server:                         active
neutron-dhcp-agent:                     active
neutron-l3-agent:                       active
neutron-metadata-agent:                 active
neutron-lbaas-agent:                    active
neutron-openvswitch-agent:              active
neutron-linuxbridge-agent:              inactive  (disabled on boot)
neutron-ryu-agent:                      inactive  (disabled on boot)
neutron-nec-agent:                      inactive  (disabled on boot)
neutron-mlnx-agent:                     inactive  (disabled on boot)
== Swift services ==
openstack-swift-proxy:                  active
openstack-swift-account:                active
openstack-swift-container:              active
openstack-swift-object:                 active
== Cinder services ==
openstack-cinder-api:                   active
openstack-cinder-scheduler:             active
openstack-cinder-volume:                active
openstack-cinder-backup:                active
== Ceilometer services ==
openstack-ceilometer-api:               active
openstack-ceilometer-central:           active
openstack-ceilometer-compute:           active
openstack-ceilometer-collector:         active
openstack-ceilometer-alarm-notifier:    active
openstack-ceilometer-alarm-evaluator:   active
== Heat services ==
openstack-heat-api:                     active
openstack-heat-api-cfn:                 active
openstack-heat-api-cloudwatch:          inactive  (disabled on boot)
openstack-heat-engine:                  active
== Support services ==
libvirtd:                               active
openvswitch:                            active
dbus:                                   active
tgtd:                                   inactive  (disabled on boot)
rabbitmq-server:                        active
memcached:                              active
== Keystone users ==
+----------------------------------+------------+---------+----------------------+
|                id                |    name    | enabled |        email         |
+----------------------------------+------------+---------+----------------------+
| d0628dbf8841486d92550a1a411ea6aa |   admin    |   True  |    root@localhost    |
| 6ae674f8ba5047a98a427f043bfac5b4 | ceilometer |   True  | ceilometer@localhost |
| 33ce7a39194244e49b965368d5c77722 |   cinder   |   True  |   cinder@localhost   |
| d1f5c5d4810e4731ad8f335f6dd237bb |    demo    |   True  |                      |
| 5dcd12aceafc4bf8adaf34a657612490 |   glance   |   True  |   glance@localhost   |
| 3e3a0c38357e44fa8f2439b46e3d02b4 |    heat    |   True  |    heat@localhost    |
| bd5cde239e874dc9bbae326981434035 |  heat-cfn  |   True  |  heat-cfn@localhost  |
| dbeb4a46c31d4fa29130b1e19e781f86 | heat_admin |   True  |                      |
| 8884d2eab5b54ceb94deab9c3e45d3db |  neutron   |   True  |  neutron@localhost   |
| 6878401b2b0a43659eec2880317c119e |    nova    |   True  |    nova@localhost    |
| 140ae099f0e341c182d033992c37c9c0 |   swift    |   True  |   swift@localhost    |
+----------------------------------+------------+---------+----------------------+
== Glance images ==
+--------------------------------------+--------+-------------+------------------+----------+--------+
| ID                                   | Name   | Disk Format | Container Format | Size     | Status |
+--------------------------------------+--------+-------------+------------------+----------+--------+
| c874b9cd-d74d-43d2-8acb-703a2a70324d | cirros | qcow2       | bare             | 13147648 | active |
+--------------------------------------+--------+-------------+------------------+----------+--------+
== Nova managed services ==
+------------------+-----------------------+----------+---------+-------+----------------------------+-----------------+
| Binary           | Host                  | Zone     | Status  | State | Updated_at                 | Disabled Reason |
+------------------+-----------------------+----------+---------+-------+----------------------------+-----------------+
| nova-consoleauth | localhost.localdomain | internal | enabled | up    | 2014-12-17T12:23:41.000000 | -               |
| nova-scheduler   | localhost.localdomain | internal | enabled | up    | 2014-12-17T12:23:44.000000 | -               |
| nova-conductor   | localhost.localdomain | internal | enabled | up    | 2014-12-17T12:23:45.000000 | -               |
| nova-compute     | localhost.localdomain | nova     | enabled | up    | 2014-12-17T12:23:43.000000 | -               |
| nova-cert        | localhost.localdomain | internal | enabled | up    | 2014-12-17T12:23:46.000000 | -               |
+------------------+-----------------------+----------+---------+-------+----------------------------+-----------------+
== Nova networks ==
+--------------------------------------+---------+------+
| ID                                   | Label   | Cidr |
+--------------------------------------+---------+------+
| 4ace4285-e254-4c20-b5c2-e07c3cf7939d | private | -    |
| b0e95e38-9762-4774-9946-fd221ca54a48 | public  | -    |
+--------------------------------------+---------+------+
== Nova instance flavors ==
+----+-----------+-----------+------+-----------+------+-------+-------------+-----------+
| ID | Name      | Memory_MB | Disk | Ephemeral | Swap | VCPUs | RXTX_Factor | Is_Public |
+----+-----------+-----------+------+-----------+------+-------+-------------+-----------+
| 1  | m1.tiny   | 512       | 1    | 0         |      | 1     | 1.0         | True      |
| 2  | m1.small  | 2048      | 20   | 0         |      | 1     | 1.0         | True      |
| 3  | m1.medium | 4096      | 40   | 0         |      | 2     | 1.0         | True      |
| 4  | m1.large  | 8192      | 80   | 0         |      | 4     | 1.0         | True      |
| 5  | m1.xlarge | 16384     | 160  | 0         |      | 8     | 1.0         | True      |
+----+-----------+-----------+------+-----------+------+-------+-------------+-----------+
== Nova instances ==
+----+------+--------+------------+-------------+----------+
| ID | Name | Status | Task State | Power State | Networks |
+----+------+--------+------------+-------------+----------+
+----+------+--------+------------+-------------+----------+
 
 
 
 
Posted by Hey Jerry
,
반응형
 
SocketServer 에서 stream으로 데이터를 클라이언트하고 다
주고 받고, 클라이언트쪽 소켓이 닫히면 stream 종료(Java에서는 -1... 언어 마다 다름)를
만나면 닫아줘야 하는데 그것을 닫지 않으면
fin/close_wait 현상이 발생합니다. 
 
 
 
 
참고 TCP State Diagram - Connection 과정
 
Close 과정
 
 
 
 
Posted by Hey Jerry
,

CentOS 7 KVM 설치

기술 2019. 8. 7. 13:35
반응형
 
 
KVM에 대한 참고 자료
 
# yum -y install qemu-kvm libvirt virt-install bridge-utils
# lsmod | grep kvm
 
kvm_intel       138567  0
kvm             441119  1 kvm_intel
 
# systemctl start libvirtd
# systemctl enable libvirtd 
 
# yum install virt-manager
 
 

bridge 네트워크 설정
 
[root@centos7kvm network-scripts]# cat ifcfg-br0
DEVICE=br0
TYPE=Bridge
BOOTPROTO=none
ONBOOT=yes
IPADDR=dhcp
 
[root@centos7kvm network-scripts]# cat ifcfg-enp2s0   (실제 NIC 명에 맞게)
HWADDR="BC:5F:F4:63:14:FC"
TYPE="Ethernet"
ONBOOT="yes"
BRIDGE=br0
 
ifconfig 결과
 
br0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet6 fe80::ac82:5eff:fe5f:bbd1  prefixlen 64  scopeid 0x20<link>
        ether ae:82:5e:5f:bb:d1  txqueuelen 0  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 10  bytes 868 (868.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

enp2s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.25.7  netmask 255.255.255.192  broadcast 192.168.25.63
        inet6 fe80::be5f:f4ff:fe63:14fc  prefixlen 64  scopeid 0x20<link>
        ether bc:5f:f4:63:14:fc  txqueuelen 1000  (Ethernet)
        RX packets 2920  bytes 928861 (907.0 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 2539  bytes 921986 (900.3 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
 
 

image 디렉토리
 
/var/lib/libvirt/images
 
다른 경로로 바꾸려면 Symbolic Link로 해결
 
 
 
 
 
Posted by Hey Jerry
,